Ситуация: есть фоновый поток, который в цикле читает сокет (в блокирующем режиме), а по приходе данных рассылает события.
Проблема в том, как этот поток корректно завершить при выходе из приложения. Сейчас у меня функция, вызываемая при закрытии программы, просто закрывает сокет, что приводит к падению фонового потока по 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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Порт не освобождается после закрытия приложения (2017)
- Форум C++ и исключение abi::__forced_unwind (2017)
- Форум Неустоичивая работа сокетов в O_NONBLOCK режиме (2004)
- Форум Непонятки с сокетами (2006)
- Форум И вновь потоки[C] (2012)
- Форум Не могу победить TIME_WAIT, как закрывать сокеты? (2010)
- Форум Генератор перестановок (2012)
- Форум javafx (java 7 se) роняет X server! (2013)
- Форум многопоточное копирование фала через сокет (2015)
- Форум закрытие сокета (2011)