Валентин Бартенев
September 27, 2013 11:54AM
On Friday 27 September 2013 19:32:20 megalodon wrote:
> Но после закрытия дескриптора, ядро автоматически удалит этот дескриптор из
> своих структур и не будет по нему отслеживать события.
>
> Ход событий в общем: воркер блокируется на epoll_wait(), по истечении
> тайм-аута либо по получении nevent событий, воркер просыпается и в цикле
> перебирает эти события. Допустим, встретилось событие на чтение и recv()
> вернуло 0, мы закрываем соединение, при этом дескриптор удаляется из
> структур подсистемы epoll, также в массив cycle->free_connections
> возвращается структура ngx_connection_t.
>
> Я не понимаю такой момент: почему ядро потом может вернуть событие для уже
> закрытого сокета?
>

Оно его уже вернуло, ещё до закрытия. Там есть комментарий:

/*
* the stale event from a file descriptor
* that was just closed in this iteration
*/

Ключевой момент тут "this iteration", вся речь идет о текущей итерации обработки
событий.

Мы могли закрыть соединение до того, как добрались до обработки событий,
с ним связанных (первая проверка). Могли закрыть соединение на read-событии,
а следом у нас идет write (вторая проверка).

--
Валентин Бартенев
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 03:32AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 06:50AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Maxim Dounin September 27, 2013 07:28AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 11:32AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Maxim Dounin September 27, 2013 11:52AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 11:54AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 12:45PM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 01:08PM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 01:26PM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 01:30PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 83
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready