Hello! On Fri, Aug 30, 2013 at 12:55:01PM +0400, [email protected] wrote:
> 30.08.2013 12:42, Maxim Dounin пишет: > >Hello! > > > >On Fri, Aug 30, 2013 at 10:06:48AM +0400, [email protected] 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; Это глобальная переменная, так что она устанавливается в NULL автоматически. Подробности в C99, 6.7.8 Initialization, абзац 10: : ... If an object that has static storage duration is : not initialized explicitly, then: : : — if it has pointer type, it is initialized to a null pointer; -- Maxim Dounin http://nginx.org/en/donation.html _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
