请教高手,SOCKET接收阻塞和发送非阻塞
各位大侠,我在程序中使用了SOCKET UDP编程,未使用I/O模型,大家都知道默认情况下SOCKET是阻塞的,因此我创建的接收线程里放置了recvfrom并通过不断循环(阻塞)接收网络数据,在时码板的中断中sendto发送数据。
前几天发现了这一情况,当服务器未开机时,我使用sendto每次发送1024字节以上的数据帧时,总要阻塞几秒钟(因为性能要求高,程序几乎不能发生任何阻塞,否则影响时码板中断造成程序死慢),因此我就把socket设置为非阻塞模式,sendto不阻塞了,但是新问题又来了recvfrom的接收线程由于非阻塞不断地循环,造成程序CPU占用100%。
请问这种情况一定要使用I/O模型才能解决吗?我的目标是“接收阻塞,发生不阻塞!”,仅此而已!
先谢谢了!
前几天发现了这一情况,当服务器未开机时,我使用sendto每次发送1024字节以上的数据帧时,总要阻塞几秒钟(因为性能要求高,程序几乎不能发生任何阻塞,否则影响时码板中断造成程序死慢),因此我就把socket设置为非阻塞模式,sendto不阻塞了,但是新问题又来了recvfrom的接收线程由于非阻塞不断地循环,造成程序CPU占用100%。
请问这种情况一定要使用I/O模型才能解决吗?我的目标是“接收阻塞,发生不阻塞!”,仅此而已!
先谢谢了!
...全文
相关推荐
Linux UDP socket 设置为的非阻塞模式与阻塞模式区别
主要介绍了Linux UDP socket 设置为的非阻塞模式与阻塞模式区别的相关资料,需要的朋友可以参考下
Python socket非阻塞模块应用示例
主要介绍了Python socket非阻塞模块,结合实例形式分析了Python socket非阻塞模块通信相关操作技巧,需要的朋友可以参考下
VS2015-Socket非阻塞式文件传输
VS2015-Socket非阻塞式文件传输 可传输jpg mov iso 等格式
Linux下的Socket编程实例(阻塞和非阻塞)
Linux下基于C/C++的Socket的阻塞和异步编程实例
python多线程非阻塞socket
socket服务端:采用多进程通信的方法(两个进程,主进程接收socket数据,子进程负责读取缓冲的数据,增大并发性能,接收采用多线程的形式) socket客户端:测试发送数据。


网络编程
