免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3100 | 回复: 4
打印 上一主题 下一主题

能否在不同的线程中使用epoll_wait和epoll_ctl? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-22 15:56 |只看该作者 |倒序浏览
大家好,我想问下,能否在不同的线程中使用epoll_wait和epoll_ctl?

比如:
thread1(void *)
{
   ....
epoll_wait();
.......
}
thread1这个时候正在等待epoll_wait的返回。

而另外一个线程这时候调用epoll_ctl添加一个handle进来,或者是改变已经在epoll_wait集合中的某handle的事件。
那么epoll_wait返回的会是正确的事件吗?这里需要有同步吗,是否只能在两个epoll_wait之间进行epoll_ctl操作?

这个问题一直困惑...,在单CPU上似乎是没问题,但是不知道多CPU下结果如何。
而且,我看ACE的代码,ACE在这里是做了同步,没有在epoll_wait正在等待的同时,进行epoll_ctl操作,
而是通过notify的方式等epoll_wait返回之后再进行epoll_ctl的操作。
不太明白ACE这么做的目的。

不知道官方对这个问题是如果说明的,或者是还有什么别的方法?

论坛徽章:
0
2 [报告]
发表于 2008-01-22 16:54 |只看该作者
我测试过,是没问题的,我的测试机的是单CPU的,不过是超线程的。

论坛徽章:
0
3 [报告]
发表于 2008-01-22 17:43 |只看该作者

看这个.

Q2     Can two epoll sets wait for the same fd? If so, are events reported to both epoll sets fds?

              A2     Yes. However, it is not recommended. Yes it would be reported to both.

论坛徽章:
0
4 [报告]
发表于 2008-01-22 17:55 |只看该作者

回复 #3 yulc 的帖子

楼主问的不是这个问题哈。

论坛徽章:
0
5 [报告]
发表于 2008-01-22 19:59 |只看该作者
当然可以用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP