winsock 阻塞的理解:阻塞时,所有套接字阻塞,还是某个套接字阻塞? winsock 阻塞的理解:阻塞时,所有套接字阻塞,还是某个套接字阻塞? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我认为,阻塞时程序控制权交给了正在执行的socket,程序无法得到控制权,这样像程序死了,此时其他的socket也不做任何事,这和所有套接字阻塞也有区别,阻塞套接字在工作. 阻塞时,所有套接字阻塞你用CSocket做个实验就知道了 所有的socket都挂起了,因为其他socket的不到被当前socket占用的资源 BLOCKING是套接字的可以设置的属性,是针对某一套接字,阻塞是指阻塞正在对这个套接字进行IO的线程,不阻塞其他线程对其他套接字的IO操作 我认为,阻塞时程序控制权交给了正在执行的socket,程序无法得到控制权,这样像程序死了,此时其他的socket也不做任何事,这和所有套接字阻塞也有区别,阻塞套接字在工作.--------------阻塞的时候,只是该线程处于等待状态,等待该socket上的消息。程序有什么控制权,控制权在cpu手里。线程调度仍然在进行,其他线程仍然会可调度,其它的socket也仍然可以用于工作。 阻塞是指阻塞正在对这个套接字进行IO的线程,不阻塞其他线程对其他套接字的IO操作 造成阻塞的原因:接收数据时端口缓冲区中无数据,这时如果被绑定的端口设置为阻塞式的,则该操作被阻塞在这里,线程被阻塞,直到有数据到来,该操作完成,线程继续执行。这个过程中其他端口上的操作是正常的。可以使用ioctlsocket(m_nSocket, FIONBIO, (ULONG*)&optval)设置端口为非阻塞。 感谢各位的解答MFCClass(profan) 说的,我猜测他可能认为是在界面线程里处理socket i/o了,我这个问题不是这个意思,我问的是关于多线程的i/o处理alec626(月吻长河) 这位兄弟可能是经常在界面线程里而不是在工作者线程里操作i/o,所以才有这样的认识除了几个兄弟和我有相同的错误认识,其他兄弟基本上都有清晰、正确的认识,谢谢各位的解答。请大家继续帮忙:http://expert.csdn.net/Expert/topic/3029/3029973.xml?temp=.9331629 MFC开发ocx 添加属性的问题 新手求问如何获取文本的二进制代码? CImage 加载图片后不显示的问题 改变 屏幕 分辨率 VC 画点问题 我的程序在release可以正常运行,可是debug时就出现了这样的错误!:(help! 谁有WSAEventSelect函数的例子代码? 极为简单的问题,高分 看看这条语句很简单,问题解决一会就给分 请问如何给一个CTime变量加上10000000秒? 我下载了BCG的代码,可是怎么用啊?谢谢 请教: 一个Windows消息能否同时被多个不同的消息函数响应?谢谢
此时其他的socket也不做任何事,这和所有套接字阻塞也有区别,阻塞套接字在工作.
你用CSocket做个实验就知道了
因为其他socket的不到被当前socket占用的资源
此时其他的socket也不做任何事,这和所有套接字阻塞也有区别,阻塞套接字在工作.
--------------
阻塞的时候,只是该线程处于等待状态,等待该socket上的消息。程序有什么控制权,控制权在cpu手里。线程调度仍然在进行,其他线程仍然会可调度,其它的socket也仍然可以用于工作。
式的,则该操作被阻塞在这里,线程被阻塞,直到有数据到来,该操作完成,线程继续执行。
这个过程中其他端口上的操作是正常的。
可以使用ioctlsocket(m_nSocket, FIONBIO, (ULONG*)&optval)设置端口为非阻塞。
MFCClass(profan) 说的,我猜测他可能认为是在界面线程里处理socket i/o了,我这个问题不是这个意思,我问的是关于多线程的i/o处理alec626(月吻长河) 这位兄弟可能是经常在界面线程里而不是在工作者线程里操作i/o,所以才有这样的认识除了几个兄弟和我有相同的错误认识,其他兄弟基本上都有清晰、正确的认识,谢谢各位的解答。请大家继续帮忙:
http://expert.csdn.net/Expert/topic/3029/3029973.xml?temp=.9331629