EventLoop的设计

1. Event Loop作为一个IO线程,通过IO复用来处理事件

2. 为了保证线程安全,任何需要修改IO线程资源的工作都交给IO线程亲自来做

3. 为了IO线程与其他线程互调,需要设计一个eventfd让其他线程把自己的请求通过socket告知IO线程

4. 通过timerfd可以方便地把回调的timer handler放在IO线程里面的来做

时间: 2024-10-30 15:47:05

EventLoop的设计的相关文章

聊聊高并发(二)结合实例说说线程封闭和背后的设计思想

高并发问题抛去架构层面的问题,落实到代码层面就是多线程的问题.多线程的问题主要是线程安全的问题(其他还有活跃性问题,性能问题等). 那什么是线程安全?下面这个定义来自<Java并发编程实战>,这本书强烈推荐,是几个Java语言的作者合写的,都是并发编程方面的大神. 线程安全指的是:当多个线程访问某个类时,这个类始终都能表现出正确的行为. 正确指的是"所见即所知",程序执行的结果和你所预想的结果一致. 理解线程安全的概念很重要,所谓线程安全问题,就是处理对象状态的问题.如果要

Netty线程设计4——EventLoop

EventLoop的注释是这样的:用来处理被注册的Channel的I/O操作,根据具体实现来处理一个或多个Channel的I/O操作. EventLoop本身没有提供有用的接口,它主要是整合了EventExecutor和EventLoopGroup接口(这样的话,EventLoop就具备了任务执行和通道注册的能力). EventLoop的实现类有EmbeddedEventLoop和SingleThreadEventLoop,SingleThreadEventLoop中包含用于处理任务的线程而Em

详解回调函数——以JS为例解读异步、回调和EventLoop

转自:http://blog.csdn.net/tywinstark/article/details/48447135#comments 很多人在问什么是回调?百度出来的答案基本都不正确,看了只会让人更加迷惑.下文试着用尽量简单的例子帮大家梳理清楚,因为回调并不是一句话下定义就能明白的概念,需要用一段文字像讲故事一样来说明,回调如同很多重要的计算机概念一样,它是有历史文化的,你需要知道它从哪里来,用来干什么,才能理解及在实际生产中应用. 回调,是非常基本的概念,尤其在现今NodeJS诞生与蓬勃发

Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)

从这一篇博文起,我们开始剖析Muduo网络库的源码,主要结合<Linux多线程服务端编程>和网上的一些学习资料! (一)TCP网络编程的本质:三个半事件 1. 连接的建立,包括服务端接受(accept) 新连接和客户端成功发起(connect) 连接.TCP 连接一旦建立,客户端和服务端是平等的,可以各自收发数据. 2. 连接的断开,包括主动断开(close 或shutdown) 和被动断开(read(2) 返回0). 3. 消息到达,文件描述符可读.这是最为重要的一个事件,对它的处理方式决定

Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程

Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程 这里的函数式编程的设计以muduo为例进行对比说明: Reactor实现架构对比 面向对象的设计类图如下: 函数式编程以muduo为例,设计类图如下: 面向对象的Reactor方案设计 我们先看看面向对象的设计方案,想想为什么这么做: 拿出Reactor事件驱动的模式设计图,对比来看,清晰明了: 从左边开始,事件驱动,需要一个事件循环和IO分发器,EventLoop和Poller很好理解:为了让事件驱动支持多平台,Poller上加

Netty4具体解释三:Netty架构设计

     读完这一章,我们基本上能够了解到Netty全部重要的组件,对Netty有一个全面的认识.这对下一步深入学习Netty是十分重要的,而学完这一章.我们事实上已经能够用Netty解决一些常规的问题了. 一.先纵览一下Netty.看看Netty都有哪些组件? 为了更好的理解和进一步深入Netty.我们先整体认识一下Netty用到的组件及它们在整个Netty架构中是怎么协调工作的.Netty应用中不可缺少的组件: Bootstrap or ServerBootstrap EventLoop E

Qt——消息对话框的设计

1.消息对话框是什么 消息对话框(MessageBox)提供了一个模态对话框,用来通知用户某些信息,或者用来询问用户一个问题并获得一个答复. 先看下面2张图—— 第一张图是网易云音乐的界面截图,在删除歌单时,防止用户误操作,弹出了一个提示,提醒用户确认删除歌单: 第二张图是Photoshop中,用户输入的颜色值不合法之后弹出的提示框,告知用户输入的颜色值要求在000000和ffffff直接. 由此大概可以知道消息对话框有哪些作用了,它可以作为删除保护框,或提示用户某些信息等等. 在Qt中有一个Q

Netty in Action (十七) 第七章节 EventLoop和线程模型

本章节包括: 1)线程模型总览 2)Event Loop概念和具体实现 3)任务调度 4)实现细节 简单地陈述一下,对于一个操作系统,编程语言,框架,或者应用来说,线程模型对其都是至关重要的一部分,在什么时间如何创建一个线程都会对你的代码执行有很重要的影响,所以对于开发人员而言,懂得在各种线程模型里面权衡利弊就是一个很重要的事情,是直接使用线程模型本身还是通过一些框架或者语言提供的线程框架对于开发者而言都是需要选择的 在这个章节,我们将会详细地讲解Netty的线程模型,这个模型是很强大的,且易于

Muduo 设计与实现之一:Buffer 类的设计

[开源访谈]Muduo 作者陈硕访谈实录 http://www.oschina.net/question/28_61182 开源访谈是开源中国推出的一系列针对国内优秀开源软件作者的访谈,以文字的方式记录并传播.我们希望开源访谈能全面的展现国内开源软件.开源软件作者的现状,着实推动国内开源软件的应用与发展. [嘉宾简介] 陈硕 北京师范大学硕士,擅长 C++ 多线程网络编程和实时分布式系统架构.现任职于香港某跨国金融公司 IT 部门,从事实时外汇交易系统开发.编写了开源 C++ 网络库 muduo