我有一个用C++编写的Windows服务,它用作侦听传入连接的TCP服务器。在Windows C++服务中阻塞两个线程
我初始化服务器套接字并将accept
代码放在一个单独的线程中。这将接受并处理传入的连接。
但是,如果服务收到STOP信号,我还需要停止该线程。所以我想用CreateEvent
创建一个事件对象,然后等待它发出信号。这种等待会发生在创建接受线程的线程中。所以我可以使用TerminateThread
函数在接收到STOP信号时停止接受线程。
然而,MSDN说
TerminateThread是只能在最极端的情况下使用危险的功能。
这应该如何严格遵守并且我的方法正确?还有什么可以做到这一点?
非常严格。在你的情况下,我认为你可以使用CancelSynchronousIo来取消accept()函数。 – 2014-09-24 06:36:17