windows客户端强制结束进程, epoll_wait收不到事件通知(不能完全收到)
时间:2011-02-16
来源:互联网
epoll_event evt[1000];
int iret = epoll_wait(epfd, evt, 1000, -1);
if (0 < iret)
{
for (i = 0; i < iret; i++)
{
int irecv = recv(...);
}
}
创建服务端, 在windows下用1000个socket客户端与服务端建立连接, 然后不调用closesocket关闭socket, 直接结束掉该windows下的进程,
此时, epoll_wait不会收到1000个socket的关闭事件, 也就是说epoll_wait经过多次唤醒, 直到
再次阻塞, iret的总和都没有达到1000(只有1,2百个), 导致服务端不能正确的释放资源.
问题: 请问为什么windows客户端强制结束进程, epoll_wait不能收到所有的客户端关闭事件通知呢?
但是如果在linux下创建1000个socket连接的话, killall -9 强制结束进程, epoll_wait却是可以正确收到1000个关闭通知的.
int iret = epoll_wait(epfd, evt, 1000, -1);
if (0 < iret)
{
for (i = 0; i < iret; i++)
{
int irecv = recv(...);
}
}
创建服务端, 在windows下用1000个socket客户端与服务端建立连接, 然后不调用closesocket关闭socket, 直接结束掉该windows下的进程,
此时, epoll_wait不会收到1000个socket的关闭事件, 也就是说epoll_wait经过多次唤醒, 直到
再次阻塞, iret的总和都没有达到1000(只有1,2百个), 导致服务端不能正确的释放资源.
问题: 请问为什么windows客户端强制结束进程, epoll_wait不能收到所有的客户端关闭事件通知呢?
但是如果在linux下创建1000个socket连接的话, killall -9 强制结束进程, epoll_wait却是可以正确收到1000个关闭通知的.
作者: mscrack 发布时间: 2011-02-16
郁闷, 弄了几天, 发现是虚拟机的原因.
作者: mscrack 发布时间: 2011-02-18
与虚拟机还有关系?
作者: justkk 发布时间: 2011-02-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28