У меня проблема с моей многопоточной сетевой серверной программой.Функция unix accept() возвращает тот же самый дескриптор файла
У меня есть основная тема, которая прослушивает новые клиентские соединения. Я использую Linux epoll для получения уведомлений о событиях ввода-вывода. Для каждого входящего события я создаю поток, который принимает() новое соединение и назначает ему fd. При большой загрузке может произойти, что один и тот же fd назначается дважды, что приводит к сбою моей программы.
Мой вопрос: как система может назначить fd, который все еще используется другим потоком?
Спасибо,
Возможный дубликат [C: epoll и многопоточность] (http://stackoverflow.com/questions/4687626/c-epoll-and-multithreading) – Nick