社区
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返回。
最难的是第二个问题。
...全文
701
7
打赏
收藏
求你一个多线程同时epoll_wait的实例。
总觉得有很多无法解决的问题,比如: 1、想read时调用epoll_ctl时无法确定是否需要EPOLLOUT。想write时调用epoll_ctl时无法确定是否需要EPOLLIN。 2、一个线程epoll_wait返回后,还没来得及调用read或write函数,另一个线程调用epoll_ctl,导致第三个线程的epoll_wait返回。 最难的是第二个问题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
程序
实例
,【
求
你
一个
多线程
同时
epoll
wait
的
实例
】
求
你
一个
多线程
同时
epoll
_
wait
的
实例
。如果目标线程是其他线程,send消息后直接返回,之后本线程应该用getmessage来响应其他线程post回来的send处理完毕的通知,该通知的处理函数会调用注册的回调。你的这个问题应该是线程函数中调用w2a导致,如果m_vecpath这个容器很大的话,w2a在频繁调用的时候会出现问题,导致的栈内存耗尽,所以保险的方式是用在频繁调用时用{}把w2a包起...
C++socket网络编程--http服务器(支持php)实战教学视频
本课程包含了socket网络编程常用的所有特性,包括tcp、udp协议的基础编程,广播包,超时连接,多路复用,高并发的
epoll
多路复用,
多线程
的服务端。课程讲解理论与实践相结合,实践以代码延时讲解为主。
epoll
_create,
epoll
_ctl和
epoll
_
wait
实例
讲解
epoll
_create,
epoll
_ctl和
epoll
_
wait
实例
讲解 Admin 2012年2月2日名人名言:人必须像天上的星星,永远很清楚地看出一切希望和愿望的火光,在地上永远不熄地燃烧着火光。——高尔基 NAME
epoll
- I/O event notification facility SYNOPSIS #includ
epoll
_create,
epoll
_ctl和
epoll
_
wait
函数用法
实例
讲解
NAME
epoll
- I/O event notification facility SYNOPSIS #include <sys/
epoll
.h> DEscrīptION
epoll
is a variant of poll(2) that can be used either as Edge or Level Tri...
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章