Re: Инициализация списка ngx_posted_events

titkovdmitry at gmail.com titkovdmitry at gmail.com
Fri Aug 30 08:55:01 UTC 2013


30.08.2013 12:42, Maxim Dounin пишет:
> Hello!
>
> On Fri, Aug 30, 2013 at 10:06:48AM +0400, titkovdmitry at gmail.com wrote:
>
>> Здравствуйте!
>> Я разрабатываю модуль к серверу nginx который позволяет формировать
>> некий текстовый ответ на http запрос.
>> Процесс формирования ответа полностью отвязан от nginx и я хотел бы
>> вынести этот процесс в thread pool.
>> Мне кажется я разобрался как это можно сделать но у меня остается
>> один вопрос.
>>
>> Реализовать я бы хотел это следующим образом, когда вызывается
>> обработчик запроса модуля я копирую все необходимые параметры в
>> структуру и передаю её на выполнение в thread pool.
>> Так же я сохраняю этот запрос в списке подобном ngx_posted_events. и
>> устанавливаю атомарный флаг готовности ответа.
>> В nginx в метод ngx_process_events_and_timers добавлю код, который
>> проверит список с запросами и те у которых готов ответ на отправку
>> вызовет соответственно
>> ngx_http_send_header(r) и ngx_http_output_filter(r, out);
>>
>> Дак вот у меня есть непонимание, где в коде nginx обнуляется
>> ngx_posted_events ? Всё перерыл, не могу найти этот момент. Буду
>> благодарен за помощь.
> Обработкой posted-событий занимается ngx_event_process_posted(),
> и там же обработанные события из очереди удаляются.
>
Я нашел где они удаляются. И мне понятен механизм работы с ними. Вопрос 
состоит в том где эта переменная инициализируется. Это указатель, в 
методе ngx_locked_post_event мы обращаемся к полям структуры которая 
должна находится по этому указателю. Дак вот где при старте сервера ей 
присвается начальное значение ? т.е должен быть код инициализации, типа 
ngx_posted_events = init_ev;



Подробная информация о списке рассылки nginx-ru