Должен ли я использовать terminatethread в этой ситуации?
Привет,
Этот цикл выполняется бесконечно в отдельном потоке std::, если я не задам
listening
к истине. Проблема в том, что я не могу завершить цикл, если пользователь решит выключить сервер, потому что accept
блокирует поток до тех пор, пока не будет установлено соединение. Есть ли лучший подход, чем использовать TerminateThread
?while (_this->listening) { SOCKET client; sockaddr_in from; int fromlen = sizeof(from); client = accept(*server_socket, (sockaddr*)&from, &fromlen); printf("Client connected\r\n"); }
Что я уже пробовал:
---------------------------------------------------------
11917640 Member
Вам нужно закрыть server_socket из другого потока, в этом случае функция accept возвращается немедленно.
[no name]
Работает ли это, даже если accept() уже был вызван и в настоящее время блокируется, то server_socket закрыт?
11917640 Member
Да, в данном случае это работает. После закрытия сокета accept должен разблокировать и выйти из строя.
[no name]
Хорошо, отлично, не могли бы вы написать решение, чтобы я мог его принять, пожалуйста?
11917640 Member
Опубликованный.