当前位置:网站首页>5.6EPOLLONESHOT事件
5.6EPOLLONESHOT事件
2022-07-30 05:39:00 【l_ethan】
EPOLLONESHOT事件
即使可以使用 ET 模式,一个socket 上的某个事件还是可能被触发多次。这在并发程序中就会引起一个 问题。比如一个线程在读取完某个 socket 上的数据后开始处理这些数据,而在数据的处理过程中该 socket 上又有新数据可读(EPOLLIN 再次被触发),此时另外一个线程被唤醒来读取这些新的数据。于 是就出现了两个线程同时操作一个 socket 的局面。一个socket连接在任一时刻都只被一个线程处理,可 以使用 epoll 的 EPOLLONESHOT 事件实现。 对于注册了EPOLLONESHOT 事件的文件描述符,操作系统最多触发其上注册的一个可读、可写或者异 常事件,且只触发一次,除非我们使用 epoll_ctl 函数重置该文件描述符上注册的 EPOLLONESHOT 事 件。这样,当一个线程在处理某个 socket 时,其他线程是不可能有机会操作该 socket 的。但反过来思考,注册了 EPOLLONESHOT 事件的 socket 一旦被某个线程处理完毕, 该线程就应该立即重置这个 socket 上的 EPOLLONESHOT 事件,以确保这个 socket 下一次可读时,其 EPOLLIN 事件能被触发,进 而让其他工作线程有机会继续处理这个 socket。
边栏推荐
- 爬虫数据是如何收集和整理的?
- 数据操作 / 数据预处理
- 报错:npm ERR code EPERM
- MySQL stored procedure
- Introduction to Oracle Patch System and Opatch Tool
- 微信小程序开发学习
- [GStreamer] 插件的名字要和GST_PLUGIN_DEFINE匹配
- CISP-PTE Zhenti Demonstration
- "Hou Lang" programmer version, a speech dedicated to a new generation of programmers, He Bing's "Hou Lang" speech imitation show
- Numpy 中 np.vstack() 和 np.hstack() 简单解析
猜你喜欢
随机推荐
131.分割回文串
What is SOA (Service Oriented Architecture)?
MySQL 用户授权
navicat连接MySQL报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password YES)
pwn-ROP
倒计数(来源:Google Kickstart2020 Round C Problem A)(DAY 88)
子查询作为检索表时的不同使用场景以及是否需要添加别名的问题
cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
MySQL的存储过程
Memories · The last system design in the university era
Machine Learning - Gradient Descent Optimization - C language implementation
2022年比若依更香的开源项目
numpy中np.inf函数的用法讲解
navicat新建数据库
机器学习—梯度下降Gradient Descent Optimization—c语言实现
np.argsort()函数详细解析
ClickHouse data insert, update and delete operations SQL
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
MySql fuzzy query Daquan
面试前需要巩固的算法知识点(自用,更新中)




![[Mysql] DATEDIFF函数](/img/cd/7d19e668701cdd5542b6e43f4c2ad4.png)




