On Friday 27 September 2013 21:26:13 megalodon wrote:
> Все, осознал: воркер, получив очередной event_list[] и обрабатывая
> некоторое событие может закрыть также и другой дескриптор, связанный с
> обрабатываемым, причем событие с этого другого закрываемого дескриптора
> также могло попасть в этот
Все, осознал: воркер, получив очередной event_list[] и обрабатывая некоторое
событие может закрыть также и другой дескриптор, связанный с обрабатываемым,
причем событие с этого другого закрываемого дескриптора также могло попасть
в этот event_list[], и пока мы до него доберемся, структура, которая
On Friday 27 September 2013 20:45:27 megalodon wrote:
> Пытаюсь вникнуть в мысль: "Мы могли закрыть соединение до того, как
> добрались до обработки событий". Но где в промежутке между epoll_wait() и
> итерацией цикла, в которой мы обрабатываем событие то место, где мы можем
> потенциально закрыть
Пытаюсь вникнуть в мысль: "Мы могли закрыть соединение до того, как
добрались до обработки событий". Но где в промежутке между epoll_wait() и
итерацией цикла, в которой мы обрабатываем событие то место, где мы можем
потенциально закрыть сокет?
events = epoll_wait(ep, event_list, (int) nevents,
Hello!
On Fri, Sep 27, 2013 at 11:32:20AM -0400, megalodon wrote:
> Но после закрытия дескриптора, ядро автоматически удалит этот дескриптор из
> своих структур и не будет по нему отслеживать события.
>
> Ход событий в общем: воркер блокируется на epoll_wait(), по истечении
> тайм-аута либо по
On Friday 27 September 2013 19:32:20 megalodon wrote:
> Но после закрытия дескриптора, ядро автоматически удалит этот дескриптор из
> своих структур и не будет по нему отслеживать события.
>
> Ход событий в общем: воркер блокируется на epoll_wait(), по истечении
> тайм-аута либо по получении neven
Но после закрытия дескриптора, ядро автоматически удалит этот дескриптор из
своих структур и не будет по нему отслеживать события.
Ход событий в общем: воркер блокируется на epoll_wait(), по истечении
тайм-аута либо по получении nevent событий, воркер просыпается и в цикле
перебирает эти события.
Hello!
On Fri, Sep 27, 2013 at 03:32:53AM -0400, megalodon wrote:
> Добрый день.
>
> В функции ngx_epoll_process_events() есть такой участок кода:
>
> for (i = 0; i < events; i++) {
> c = event_list[i].data.ptr;
>
> instance = (uintptr_t) c & 1;
> c = (ngx_connection_t
Добрый день.
В функции ngx_epoll_process_events() есть такой участок кода:
for (i = 0; i < events; i++) {
c = event_list[i].data.ptr;
instance = (uintptr_t) c & 1;
c = (ngx_connection_t *) ((uintptr_t) c & (uintptr_t) ~1);
rev = c->read;
if (c->fd == -1