ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



Hello!

On Fri, Aug 30, 2013 at 12:55:01PM +0400, titkovdmitry@xxxxxxxxx wrote:

> 30.08.2013 12:42, Maxim Dounin пишет:
> >Hello!
> >
> >On Fri, Aug 30, 2013 at 10:06:48AM +0400, titkovdmitry@xxxxxxxxx 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
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.