社区
Linux/Unix社区
帖子详情
求你一个多线程同时epoll_wait的实例。
飞翔的薄荷
2013-04-19 10:48:16
总觉得有很多无法解决的问题,比如:
1、想read时调用epoll_ctl时无法确定是否需要EPOLLOUT。想write时调用epoll_ctl时无法确定是否需要EPOLLIN。
2、一个线程epoll_wait返回后,还没来得及调用read或write函数,另一个线程调用epoll_ctl,导致第三个线程的epoll_wait返回。
最难的是第二个问题。
...全文
749
7
打赏
收藏
求你一个多线程同时epoll_wait的实例。
总觉得有很多无法解决的问题,比如: 1、想read时调用epoll_ctl时无法确定是否需要EPOLLOUT。想write时调用epoll_ctl时无法确定是否需要EPOLLIN。 2、一个线程epoll_wait返回后,还没来得及调用read或write函数,另一个线程调用epoll_ctl,导致第三个线程的epoll_wait返回。 最难的是第二个问题。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rem2002
2014-03-06
打赏
举报
回复
我也在纠结这个问题啊, 不是 读,就是写,这不等于是单工的了,我刚开始以为 epoll_ctl 可以对同一fd 注册读、写两事件,测试时不能,期望交流。
飞翔的薄荷
2013-04-24
打赏
举报
回复
为什么要多个线程操作epoll?一个线程收发包,其他线程负责处理逻辑不好吗: 我的代码要在windows和linux下都能跑,因此希望两种逻辑结构都差不多。windows下就是多个线程同时等待一个完成端口。 就问题本身而言,多线程操作同一个对象,还是加锁或者用队列更安全。 不能加锁,加锁后相当于一个线程。 搞定了没?可以探讨一下。 因为其它项目,这个项目挂起了。
tommwq
2013-04-21
打赏
举报
回复
为什么要多个线程操作epoll?一个线程收发包,其他线程负责处理逻辑不好吗? 就问题本身而言,多线程操作同一个对象,还是加锁或者用队列更安全。
heartlesstoanyone
2013-04-21
打赏
举报
回复
搞定了没?可以探讨一下。
飞翔的薄荷
2013-04-19
打赏
举报
回复
写错了,write应该是recv。
飞翔的薄荷
2013-04-19
打赏
举报
回复
我知道用EPOLLONESHOT清理掉,但是另一个线程使用epoll_ctl后,又被加上了。 比如我想处理一个write事件,需要加入EPOLLIN,一个线程epoll_wait返回,但还没来得及处理我的代码(也就是我还不知道要清理掉EPOLLIN)。另一个线程请求一个send,需要加入EPOLLOUT,此时调用epoll_ctl看到EPOLLIN还没有处理,所有epoll_ctl使用EPOLLIN|EPOLLOUT。然后悲剧了,有两个线程同时处理EPOLLIN。
qq120848369
2013-04-19
打赏
举报
回复
1,根本不是问题,这只能说明你不会设计代码。 2,了解EPOLLONESHOT选项,可以帮助你多线程共享同一个epoll set的原子性,从模式来说这叫做leader-follower模型。
epoll
+
多线程
代码
epoll
+
多线程
的例子,本例子还有压力测试。
linux
epoll
多线程
编程 例子
linux
epoll
多线程
编程 例子
Linux C
epoll
.zip_Linux下线程池_c
epoll
_
epoll
C++_
epoll
线程池_linux c
linux下实现的的线程池,其中包括客户端和服务端
EPOLL
_bring_us.gz_
epoll
_things
epoll
bring us many things,so we can study in this doc.
linux
epoll
多线程
编程
实例
,在Linux下编译通过
linux
epoll
多线程
编程
实例
,在Linux下编译通过
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章