-1
A
回答
2
一旦select/poll/epoll成功返回,请仅通过调用recvfrom
来避免这种情况。
像@Remy勒博在评论中提到的,你可以上拉像下面的东西:
while(run_flag) {
if(check select/poll/epoll) {
recvfrom(..)
}
}
可以开始使用epoll与select这里。互联网上也有很多。
另一种方法是使用异步网络操作而不是线程。
我也可能会推荐使用boost::asio,因为这只是您所有的网络资料。
2
使用“自管”的把戏。
使用管道(2)系统调用打开管道。坐在循环中使用select/poll/kqueue /从你关心的套接字和管道读取任何内容。当你从你的套接字获取数据时,照常处理它。
要停止线程,请关闭要停止处理的线程中管道的另一端。您将在管道上将其检测为EOF,然后您可以将其用作信号来停止线程处理实际套接字。
相关问题
- 1. 如何在Qt中终止线程C++
- 2. 如何在读取流时正确终止Python3线程
- 3. 线程终止在C#
- 4. 线程终止问题(C):最后线程不终止
- 5. 从另一个线程终止C++中的线程
- 6. 从lisp的socket-stream读取线
- 7. 如何终止线程
- 8. 如何终止performSelectorInBackground:线程?
- 9. 线程中断未终止输入流读取阻塞调用
- 10. 终止线程
- 11. 父进程在C#中终止时如何终止子进程
- 12. Java - 终止线程
- 13. SlimDX - 终止线程
- 14. 使用http获取请求终止的线程终止
- 15. c#wpf线程没有正确终止
- 16. c#:如何在dispose()方法中终止后台线程?
- 17. C#Socket编程中的线程管理
- 18. 如何在c中终止程序?
- 19. win32线程意外终止在activeX(C++)
- 20. 如何获取终止的Java线程的中断状态?
- 21. 从Socket中读取线条并将它们放入BlockingQueue中
- 22. 调用SIGINT时终止线程 - C
- 23. Java终止或终止线程
- 24. 如何检查线程是否终止?
- 25. 如何终止一个std ::线程?
- 26. 如何立即终止Parallel.ForEach线程?
- 27. 如何终止一个线程?
- 28. 如何最好地终止python线程?
- 29. 如何从WiX中终止进程
- 30. asp.net中的线程何时终止?
设置一些“终止”布尔,从另一个线程关闭套接字。如果UDP就像TCP一样,recvfrom()应该返回'early'并且出现错误。 – 2013-03-04 19:37:50
..或设置布尔和发送插座UDP报文的本地栈,所以使它返回。 – 2013-03-04 19:41:22