ASIO-х epoll_reactor
бэкэнд ассоциируется descriptor_state
с каждым файловым дескриптором с помощью указателя, хранящегося в data.ptr
из epoll_event
представлен epoll_ctl
,
Когда дескриптор удаляется, потому что связанный сокет закрыт или уничтожен, epoll_reactor::deregister_descriptor
возвращает descriptor_state
для object_pool
, который поддерживает свободный список состояний дескриптора.
На данный момент, descriptor_state
может быть снова использован, когда будет создан новый сокет.
Давайте предположим, что есть несколько рабочих потоков, вызывающих io_service.run()
, Что гарантирует, что выдающийся вызов epoll_wait не вернет epoll_event с data.ptr со ссылкой на старый descriptor_state
, который, возможно, уже был повторно использован?
Задача ещё не решена.