Ситуация: есть фоновый поток, который в цикле читает сокет (в блокирующем режиме), а по приходе данных рассылает события. Проблема в том, как этот поток корректно завершить при выходе из приложения. Сейчас у меня функция, вызываемая при закрытии программы, просто закрывает сокет, что приводит к падению фонового потока по SocketException. Но это нехорошо, потому что сокет - разделяемая переменная, так? Псевдокод такой: void start() { sock = createSocket(); listeners = createActionListenerArray(); startThread(); } void runThread() { try { while(!sock.isClosed()) { data = sock.receive(); sendEventToAll(listeners, data); } } catch(SocketException) { // сокет закрылся } } void stop() { sock.close(); }
Ответ на:
комментарий
от Kpoxman
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Регистрация в Selector из другого потока (2018)
- Форум Порт не освобождается после закрытия приложения (2017)
- Форум Неустоичивая работа сокетов в O_NONBLOCK режиме (2004)
- Форум Непонятки с сокетами (2006)
- Форум многопоточное копирование фала через сокет (2015)
- Форум закрытие сокета (2011)
- Форум закрытие сокета (2008)
- Форум разбираюсь с классами непонятные ошибки при компиляции объясните в чем я неправ??? (2010)
- Форум потоки и сокет (2004)
- Форум Python потоки сокеты (2007)