История изменений
Исправление HighMan, (текущая версия) :
Что будет, если из разных потоков для одного дескриптора вызывать poll и recvfrom?
Хм.. вы poll хотите в разных потоках вызывать?
Я вызываю и обрабатываю poll в главном потоке и в зависимости от events вызываю обработчик события нужного сокета. И все это в единственном главном потоке.
Использование poll/epoll/select позволяет избавиться от многопоточности.
Ой, я проглядел, что вы вызываете recvfrom, а не recv.
recfrom - это, обычно, работа по udp. Тут, как бы не нужны потоки, да и poll.
Висите на recvfrom и по получении данных вызываете обработчик привязанный к sockaddr_in.
poll для udp тоже можно внедрить, если вам нужно еще что-то обрабатывать, кроме ответа на поступающие запросы.
Исправление HighMan, :
Что будет, если из разных потоков для одного дескриптора вызывать poll и recvfrom?
Хм.. вы poll хотите в разных потоках вызывать?
Я вызываю и обрабатываю poll в главном потоке и в зависимости от events вызываю обработчик события нужного сокета. И все это в единственном главном потоке.
Использование poll/epoll/select позволяет избавиться от многопоточности.
Исходная версия HighMan, :
Что будет, если из разных потоков для одного дескриптора вызывать poll и recvfrom?
Хм.. вы poll хотите в разных вызывать?
Я вызываю и обрабатываю poll в главном потоке и в зависимости от events вызываю обработчик события нужного сокета. И все это в единственном главном потоке.
Использование poll/epoll/select позволяет избавиться от многопоточности.