多线程调用epoll_wait()的线程安全问题分析 http://blog.csdn.net/lmh12506/article/details/7836827
来源:互联网 发布:淘宝饰品店推荐 编辑:程序博客网 时间:2024/05/03 20:09
http://blog.csdn.net/lmh12506/article/details/7836827
多线程调用epoll_wait()的线程安全问题分析
2012-08-06 20:57 3041人阅读 评论(1) 收藏 举报
多线程socketthread工作
目录(?)[+]
多线程epoll_wait后得到的活跃fd是线程安全的吗?
或者说多个线程在epoll_wait后,各个线程得到的epoll_event[]里的socket有相同的吗?
有可能各个线程得到的epoll_event[]里的socket有相同的。特别在LT模式下。虽然内核使用了排他锁每次只唤醒一个epoll_wait()进程,但如果在LT模式下,而且唤醒的进程没有处理完该fd的全部数据,那么下一个epoll_wait()进程醒来的时候,就有可能得到该fd还是可读的,这样各个线程得到的epoll_event[]里的socket就有可能是相同的。注意是:可能!!!
加上EPOLLONESHOT ,一个socket就只有一个thread处理,然后再epoll_ctl EPOLL_CTL_MOD修改该fd。
正解,EPOLLONESHOT,
至于ET和LT我还没有进行过对比,但是在大量实践中,LT+EPOLLONESHOT的工作是可靠的。
至于ET和LT我还没有进行过对比,但是在大量实践中,LT+EPOLLONESHOT的工作是可靠的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
0 0
- 多线程调用epoll_wait()的线程安全问题分析 http://blog.csdn.net/lmh12506/article/details/7836827
- epoll_create函数实现源码分析 http://blog.csdn.net/lmh12506/article/details/7556188
- poll函数源码详细分析 http://blog.csdn.net/lmh12506/article/details/7556297
- 多线程调用epoll_wait()的线程安全问题分析
- 海量数据处理常用思路和方法 http://blog.csdn.net/lmh12506/article/details/7563266
- ldd 的一个安全问题(http://blog.csdn.net/haoel/article/details/4795024)
- 多线程 - 你知道线程栈吗 http://blog.csdn.net/gykimo/article/details/9132157
- 线程调度 http://blog.csdn.net/loyal_baby/article/details/4202083
- select系统调用源码分析 http://blog.csdn.net/martin_liang/article/details/9124911
- Linux--Sys_Read系统调用过程分析 http://blog.csdn.net/guopeixin/article/details/5962489
- linux内核mount系统调用源码分析 http://blog.csdn.net/wugj03/article/details/41958029
- 内核线程与用户线程的区别 http://blog.csdn.net/wangkechuang/article/details/7883170
- pthread_create线程创建的过程剖析 http://blog.csdn.net/yetyongjin/article/details/7673837
- 进程线程及堆栈关系的总结 http://blog.csdn.net/echoisland/article/details/6403763
- Java程序和C程序的相互调用http://blog.csdn.net/yasi_xi/article/details/8437628
- 函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal) http://blog.csdn.net/kaiwii/article/details/8500686
- Linux--根文件系统的挂载过程分析 http://blog.csdn.net/guopeixin/article/details/5962482
- suspend造成死锁的例子和原因分析 http://blog.csdn.net/magictong/article/details/4161571
- TeleRTC p2p 音频通话客户端协议标准
- 解析nginx负载均衡
- 1053. Path of Equal Weight (30)
- django DateTimeField 时区问题解决
- VS2012: Productivity Power Tools 动画演示
- 多线程调用epoll_wait()的线程安全问题分析 http://blog.csdn.net/lmh12506/article/details/7836827
- iOS scrollview实现图片放大和缩小的功能
- TestNG 图解说明
- cookie 和session 的区别详解
- UML类图中常见的几种关系:泛化、 实现、关联、聚合与组合
- Spark:Yarn-cluster和Yarn-client区别与联系
- Hibernate介绍和初次环境配置
- ThuThesis模板中\footnote每页重新从2编号的问题解决
- (转)epoll源码分析 http://www.cnblogs.com/debian/archive/2012/02/16/2354454.html