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