现有一个线程,线程中有select控制一个socket,但我需要快速又安全的线束这个线程。
在Linux下我是用eventfd唤醒select,再跳出循环。
在Windows下有没有类似的方法?如何做?请Windows网络编程的大牛支招。
Windows下没有eventfd,也没有pipe,但我用socket模拟了一个pipe,解决了这个问题。
参考:http://blog.csdn.net/chief1985/article/details/5064998
用下面的代码可以吗?
closesocket(sock); WSACleanup();
参考:Transitioning from UNIX to Windows Socket Programming(pdf)
这种方法不太好,因为在析构函数中还有对socket的关闭,如果要做到线程安全,还得加锁什么的,效率会下降
Windows 下用 IOCP。