[英]Does a socket shutdown call from another thread always make blocking recv() threads wake up?
我找不到太多文档说明这种情况是否应该发生:
此行为出现在现代Linux和FreeBSD系统上。 我没有和其他人一起测试过。
在此处对Microsoft MSDN帮助页面的评论: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/ms740481%28v=vs.85%29.aspx表明,此行为是“负责任的”视窗; 它还指出这不是“当前情况”,但可能已过时。
是否在任何地方指定了此行为? 我可以依靠吗?
我认为您不能依靠它。 shutdown()初始化套接字关闭,但是详细信息取决于特定的情况。 某些协议确实可能立即关闭连接和套接字,这将唤醒在该套接字上休眠的进程。 在其他情况下,关机只是使协议状态机起作用,但是要花点时间才能唤醒任何人。 例如,已建立的TCP连接必须转换为几个状态,直到达到CLOSED状态。 您最终将醒来,但是您不能依靠它立即发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.