首页 新闻 会员 周边 捐助

Windows下如何中断select函数

1
悬赏园豆:10 [已解决问题] 解决于 2015-03-26 10:15

现有一个线程,线程中有select控制一个socket,但我需要快速又安全的线束这个线程。

在Linux下我是用eventfd唤醒select,再跳出循环。

在Windows下有没有类似的方法?如何做?请Windows网络编程的大牛支招。

BYSF_XF的主页 BYSF_XF | 初学一级 | 园豆:193
提问于:2015-03-25 16:53
< >
分享
最佳答案
1

Windows下没有eventfd,也没有pipe,但我用socket模拟了一个pipe,解决了这个问题。

参考:http://blog.csdn.net/chief1985/article/details/5064998

BYSF_XF | 初学一级 |园豆:193 | 2015-03-25 23:45
其他回答(2)
0

用下面的代码可以吗?

closesocket(sock);
WSACleanup();

参考:Transitioning from UNIX to Windows Socket Programming(pdf)

收获园豆:5
dudu | 园豆:30757 (高人七级) | 2015-03-25 17:00

这种方法不太好,因为在析构函数中还有对socket的关闭,如果要做到线程安全,还得加锁什么的,效率会下降

支持(0) 反对(0) BYSF_XF | 园豆:193 (初学一级) | 2015-03-25 18:01
0

Windows 下用 IOCP。

收获园豆:5
Launcher | 园豆:45050 (高人七级) | 2015-03-26 10:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册