我有一個用C++編寫的Windows服務,它用作偵聽傳入連接的TCP服務器。在Windows C++服務中阻塞兩個線程
我初始化服務器套接字並將accept
代碼放在一個單獨的線程中。這將接受並處理傳入的連接。
但是,如果服務收到STOP信號,我還需要停止該線程。所以我想用CreateEvent
創建一個事件對象,然後等待它發出信號。這種等待會發生在創建接受線程的線程中。所以我可以使用TerminateThread
函數在接收到STOP信號時停止接受線程。
然而,MSDN說
TerminateThread是隻能在最極端的情況下使用危險的功能。
這應該如何嚴格遵守並且我的方法正確?還有什麼可以做到這一點?
非常嚴格。在你的情況下,我認爲你可以使用CancelSynchronousIo來取消accept()函數。 – 2014-09-24 06:36:17