winsock 阻塞的理解:阻塞时,所有套接字阻塞,还是某个套接字阻塞?

fangcheng 2004-04-29 03:51:54
winsock 阻塞的理解:阻塞时,所有套接字阻塞,还是某个套接字阻塞?
...全文
73 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangcheng 2004-05-03
  • 打赏
  • 举报
回复
感谢各位的解答
MFCClass(profan) 说的,我猜测他可能认为是在界面线程里处理socket i/o了,我这个问题不是这个意思,我问的是关于多线程的i/o处理

alec626(月吻长河) 这位兄弟可能是经常在界面线程里而不是在工作者线程里操作i/o,所以才有这样的认识

除了几个兄弟和我有相同的错误认识,其他兄弟基本上都有清晰、正确的认识,谢谢各位的解答。

请大家继续帮忙:
http://expert.csdn.net/Expert/topic/3029/3029973.xml?temp=.9331629
halk 2004-04-30
  • 打赏
  • 举报
回复
我认为,阻塞时程序控制权交给了正在执行的socket,程序无法得到控制权,这样像程序死了,
此时其他的socket也不做任何事,这和所有套接字阻塞也有区别,阻塞套接字在工作.
--------------
阻塞的时候,只是该线程处于等待状态,等待该socket上的消息。程序有什么控制权,控制权在cpu手里。线程调度仍然在进行,其他线程仍然会可调度,其它的socket也仍然可以用于工作。
Gladstone 2004-04-30
  • 打赏
  • 举报
回复
造成阻塞的原因:接收数据时端口缓冲区中无数据,这时如果被绑定的端口设置为阻塞
式的,则该操作被阻塞在这里,线程被阻塞,直到有数据到来,该操作完成,线程继续执行。
这个过程中其他端口上的操作是正常的。
可以使用ioctlsocket(m_nSocket, FIONBIO, (ULONG*)&optval)设置端口为非阻塞。
fzd999 2004-04-30
  • 打赏
  • 举报
回复
被阻塞的包括两个方面,一方面是当前套接字所对应的端口被阻塞了,另一方面是当前使用这个套接字的线程被挂起了。




lygfqy 2004-04-30
  • 打赏
  • 举报
回复
应该只是阻塞你当前控制的套接字,而其他的不控制不受影响
whslovexyp 2004-04-30
  • 打赏
  • 举报
回复
调用任何一个阻塞模式的函数,都会产生相同的后果-----耗费或长或短的时间等待操作的完成。它只阻塞调用阻塞函数的套接字。如果程序是单线程的,程序都被阻塞了,如果是多线程的并不影响其他的套接字。
vagabondkq 2004-04-30
  • 打赏
  • 举报
回复
设置某个套接字阻塞,它就阻塞.
UDX协议 2004-04-30
  • 打赏
  • 举报
回复
阻塞是指阻塞正在对这个套接字进行IO的线程,不阻塞其他线程对其他套接字的IO操作
wangle11111 2004-04-30
  • 打赏
  • 举报
回复
阻塞是组塞了现在正在执行的那个套接字,是由于调用某个函数,但这个函数所要求的数据没有及时的拱它使用,所以没有办法了,只能等待了。这样对于能接收多个连接的程序来说就有麻烦了,因为在建立连接的请求者中只要有一个没有把数据传过来,那么响应的函数就要等。而其他的套接字(建立好连接的)即使数据准备好了,发出去了,服务器端也不会响应的,因为它的套接字处于阻塞状态。就好比去买东西,如果对哪个顾客的收银速度慢了,即使你在有钱也要等,等那个顾客交完钱后在去买。。。
sevencat 2004-04-29
  • 打赏
  • 举报
回复
是想哪个阻就哪个阻,想哪个不阻就哪个不阻。
phiger 2004-04-29
  • 打赏
  • 举报
回复
BLOCKING是套接字的可以设置的属性,是针对某一套接字,阻塞是指阻塞正在对这个套接字进行IO的线程,不阻塞其他线程对其他套接字的IO操作
PiggyXP 2004-04-29
  • 打赏
  • 举报
回复
所有的socket都挂起了,
因为其他socket的不到被当前socket占用的资源
月吻长河 2004-04-29
  • 打赏
  • 举报
回复
阻塞时,所有套接字阻塞
你用CSocket做个实验就知道了
微星1234 2004-04-29
  • 打赏
  • 举报
回复
阻塞是所有套接字阻塞的.
MFCClass 2004-04-29
  • 打赏
  • 举报
回复
我认为,阻塞时程序控制权交给了正在执行的socket,程序无法得到控制权,这样像程序死了,
此时其他的socket也不做任何事,这和所有套接字阻塞也有区别,阻塞套接字在工作.

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧