请教高手,SOCKET接收阻塞和发送非阻塞
各位大侠,我在程序中使用了SOCKET UDP编程,未使用I/O模型,大家都知道默认情况下SOCKET是阻塞的,因此我创建的接收线程里放置了recvfrom并通过不断循环(阻塞)接收网络数据,在时码板的中断中sendto发送数据。
前几天发现了这一情况,当服务器未开机时,我使用sendto每次发送1024字节以上的数据帧时,总要阻塞几秒钟(因为性能要求高,程序几乎不能发生任何阻塞,否则影响时码板中断造成程序死慢),因此我就把socket设置为非阻塞模式,sendto不阻塞了,但是新问题又来了recvfrom的接收线程由于非阻塞不断地循环,造成程序CPU占用100%。
请问这种情况一定要使用I/O模型才能解决吗?我的目标是“接收阻塞,发生不阻塞!”,仅此而已!
先谢谢了!