Безопасно ли повторное использование состояний дескриптора в серверной части epoll Boost ASIO?

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, который, возможно, уже был повторно использован?

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector