У меня есть служба Windows, написанная на C++, которая функционирует как TCP-сервер, который слушает входящие соединения.Блокировка двух потоков в службе Windows C++
Я инициализировал серверный сокет и поместил код accept
в отдельный поток. Это будет принимать и обрабатывать входящие соединения.
Однако мне также необходимо остановить этот поток, если служба получает сигнал STOP. Поэтому я подумал о создании объекта события, используя CreateEvent
и ожидая его передачи. Это ожидание произойдет в потоке, который создает поток accept. Поэтому я мог использовать функцию TerminateThread
, чтобы остановить поток accept, когда принимается сигнал STOP.
Однако MSDN говорит, что
TerminateThread опасная функция, которая должна использоваться только в самых крайних случаях.
Насколько строго это следует соблюдать, и мой подход правильный? Что может быть другим способом сделать это?
Очень строго. В вашей ситуации, я думаю, вы можете использовать CancelSynchronousIo для отмены функции accept(). –