LINUX.ORG.RU

История изменений

Исправление 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 позволяет избавиться от многопоточности.