Нужно ли отменять регистрацию fd в epoll/kqueue при закрытии сокета?

Правда ли, что если я закрываю сокет, его fd автоматически очищается от epoll и/или kqueue?
Если да, означает ли это, что нет необходимости вручную отменять регистрацию fd при закрытии fd?

На самом деле я использую Tornado, любые советы по этому поводу также будут оценены.


person adamsmith    schedule 24.12.2013    source источник


Ответы (1)


В Tornado вы должны вызвать IOLoop.remove_handler перед закрытием сокета. Epoll и kqueue внутренне автоматически обнаружат, что сокет был закрыт, но сам IOLoop все еще имеет некоторое состояние (сопоставление файловых дескрипторов с функциями обработчика), которое необходимо очистить.

person Ben Darnell    schedule 26.12.2013