Welcome! Log In Create A New Profile

Advanced

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

August 30, 2013 07:36AM
30.08.2013 14:15, Maxim Dounin пишет:
> Hello!
>
> On Fri, Aug 30, 2013 at 12:55:01PM +0400, titkovdmitry@gmail.com wrote:
>
>> 30.08.2013 12:42, Maxim Dounin пишет:
>>> Hello!
>>>
>>> On Fri, Aug 30, 2013 at 10:06:48AM +0400, titkovdmitry@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;
> Это глобальная переменная, так что она устанавливается в 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;
>
Понял. Спасибо огромное. И извиняюсь за получается глупый вопрос. Сам на
C++ пишу и этого не знал. Ещё раз спасибо!

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

titkovdmitry August 30, 2013 02:22AM

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

Maxim Dounin August 30, 2013 04:44AM

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

titkovdmitry August 30, 2013 05:10AM

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

Maxim Dounin August 30, 2013 06:16AM

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

titkovdmitry August 30, 2013 07:36AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 221
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready