Люди добрые,Подскажите алгоритм.. Пишется мильти-тредовый сервер, и хочется чтоб ВСЕ сообщения информационные и т.д. обрабатывались в отдельном треде.
IMHO это уберет необходимость файловых блокировок, повысит скорость.. и т.д.Внимание вопрос.. кто нибудь такое реализовывал ?? Что делать если тред еще не готов к работе ... просто буферизировать сообщения ??
Советы и URL приветствуются.. Удачи.
>Люди добрые,
>
>Подскажите алгоритм.. Пишется мильти-тредовый сервер, и хочется чтоб ВСЕ сообщения информационные
>и т.д. обрабатывались в отдельном треде.
>
>IMHO это уберет необходимость файловых блокировок, повысит скорость.. и т.д.
>
>Внимание вопрос.. кто нибудь такое реализовывал ?? Что делать если тред еще
>не готов к работе ... просто буферизировать сообщения ??
>
>Советы и URL приветствуются.. Удачи.
Не знаю в тему или нет, идея следующая:1. Создается некий стек сообщений
2. Создается тред для вывода сообщенийДалее основной процесс, когда нужно вывести некое сообщение, просто помещает его в стек сообщений (используя блокировку, например pthread-овый mutex).
В треде с определенным интервалом проверяется количество сообщений, и если есть что
сообщать, опять таки используя блокировку, эти сообщения выводятся с последующим их удалением из стека
>
>В треде с определенным интервалом проверяется количество сообщений, иВообще-то лучше использовать pthread_cond_t - условные переменные для оповещения логирующего потока о новых сообщениях в стеке (а точнее в очереди).
Преимущества этого подхода:
1. Логирующий поток более оперативно сбрасывает в лог сообщения
2. Снижается нагрузка на процессор
>>
>>В треде с определенным интервалом проверяется количество сообщений, и
>
>Вообще-то лучше использовать pthread_cond_t - условные переменные для оповещения логирующего потока о
>новых сообщениях в стеке (а точнее в очереди).
>Преимущества этого подхода:
>1. Логирующий поток более оперативно сбрасывает в лог сообщения
>2. Снижается нагрузка на процессорПолностью согласен, только я попытался без привязки к libpthread, а mutex привел в качестве примера, а так pthread_cond_wait и phread_cond_signal.
>
>Не знаю в тему или нет, идея следующая:
>
>1. Создается некий стек сообщений
>2. Создается тред для вывода сообщений
>
>Далее основной процесс, когда нужно вывести некое сообщение, просто помещает его
>в стек сообщений (используя блокировку, например pthread-овый mutex).
>
>В треде с определенным интервалом проверяется количество сообщений, и если есть что
>
> сообщать, опять таки используя блокировку, эти сообщения выводятся с последующим их
>удалением из стекаНу в общем так и сделано... использовал ФИФО и семафор..
Просто хотел узнать кто как делает.. и насколько это правильно