URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 817
[ Назад ]

Исходное сообщение
"Logging pthread HOWTO ;-)"

Отправлено Sergey , 29-Июн-02 10:58 
Люди добрые,

Подскажите алгоритм..  Пишется мильти-тредовый сервер, и хочется чтоб ВСЕ сообщения информационные и т.д. обрабатывались в отдельном треде.

IMHO это уберет необходимость файловых блокировок, повысит скорость.. и т.д.

Внимание вопрос.. кто нибудь такое реализовывал ?? Что делать если тред еще не готов к работе ... просто буферизировать сообщения ??

Советы и URL приветствуются..  Удачи.


Содержание

Сообщения в этом обсуждении
"RE: Logging pthread HOWTO ;-)"
Отправлено Soldier , 01-Июл-02 12:29 
>Люди добрые,
>
>Подскажите алгоритм..  Пишется мильти-тредовый сервер, и хочется чтоб ВСЕ сообщения информационные
>и т.д. обрабатывались в отдельном треде.
>
>IMHO это уберет необходимость файловых блокировок, повысит скорость.. и т.д.
>
>Внимание вопрос.. кто нибудь такое реализовывал ?? Что делать если тред еще
>не готов к работе ... просто буферизировать сообщения ??
>
>Советы и URL приветствуются..  Удачи.


Не знаю в тему или нет, идея следующая:

1. Создается некий стек сообщений
2. Создается тред для вывода сообщений

Далее основной процесс, когда нужно  вывести некое сообщение, просто помещает его в стек сообщений (используя блокировку, например pthread-овый mutex).

В треде с определенным интервалом проверяется количество сообщений, и если есть что  
сообщать, опять таки используя блокировку, эти сообщения выводятся с последующим их удалением из стека


"RE: Logging pthread HOWTO ;-)"
Отправлено romanSA , 01-Июл-02 14:47 
>
>В треде с определенным интервалом проверяется количество сообщений, и

Вообще-то лучше использовать pthread_cond_t - условные переменные для оповещения логирующего потока о новых сообщениях в стеке (а точнее в очереди).
Преимущества этого подхода:
1. Логирующий поток более оперативно сбрасывает в лог сообщения
2. Снижается нагрузка на процессор


"RE: Logging pthread HOWTO ;-)"
Отправлено Soldier , 01-Июл-02 15:08 
>>
>>В треде с определенным интервалом проверяется количество сообщений, и
>
>Вообще-то лучше использовать pthread_cond_t - условные переменные для оповещения логирующего потока о
>новых сообщениях в стеке (а точнее в очереди).
>Преимущества этого подхода:
>1. Логирующий поток более оперативно сбрасывает в лог сообщения
>2. Снижается нагрузка на процессор

Полностью согласен, только я попытался без привязки к libpthread, а mutex привел в качестве примера, а так pthread_cond_wait и phread_cond_signal.



"RE: Logging pthread HOWTO ;-)"
Отправлено Sergey , 02-Июл-02 12:32 
>
>Не знаю в тему или нет, идея следующая:
>
>1. Создается некий стек сообщений
>2. Создается тред для вывода сообщений
>
>Далее основной процесс, когда нужно  вывести некое сообщение, просто помещает его
>в стек сообщений (используя блокировку, например pthread-овый mutex).
>
>В треде с определенным интервалом проверяется количество сообщений, и если есть что
>
> сообщать, опять таки используя блокировку, эти сообщения выводятся с последующим их
>удалением из стека

Ну в общем так и сделано... использовал ФИФО и семафор..
Просто хотел узнать кто как делает.. и насколько это правильно