выбор на сокете UDP не заканчивается, когда сокет закрывается - что я делаю неправильно?

Просто предоставьте другую идею

df.cumsum()[~df.Col1].nunique()
Out[408]: 
Col1    3
dtype: int64
8
задан Michael Kohne 26 January 2009 в 19:04
поделиться

5 ответов

Возможно, необходимо использовать что-то еще для пробуждения выбора. Возможно, канал или что-то как этот.

4
ответ дан 5 December 2019 в 11:28
поделиться

UDP является протоколом без установления соединения. С тех пор нет никакого соединения, ни один не может быть поврежден, таким образом, потребитель не знает, что производитель никогда не будет отправлять снова.

Вы могли заставить производителя отправить "конец потока" сообщение и сделать, чтобы потребитель завершился после получения его.

4
ответ дан 5 December 2019 в 11:28
поделиться

Я думаю, что самое очевидное решение - то, чтобы это, было закрытым не считают исключительным условием. Я думаю, что корень проблемы, из которого Вы действительно не охватываете философию select. С какой стати Вы возящийся с сокетом в другом потоке, который походит на залог провала.

2
ответ дан 5 December 2019 в 11:28
поделиться

Я сказал бы, что различие - то, что recvfrom активно пытается прочитать сообщение из единственного сокета, где выбор ожидает сообщения, чтобы прибыть, возможно на нескольких дескрипторах, и не обязательно снабдить дескрипторы сокетом.

2
ответ дан 5 December 2019 в 11:28
поделиться

Не могли бы вы послать потоку сигнал (например, USR2), который заставил бы select () вернуться с EINTR? Затем в обработчике сигналов установите флаг, запрещающий перезапускать select ()?

. Это устранит необходимость в ожидании нескольких файловых дескрипторов и кажется намного чище, чем использование канала для его уничтожения.

3
ответ дан 5 December 2019 в 11:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: