1.2 事件驱动reactor的原理与实现
2.2 Reactor的原理和实现2.2.1 什么是Reactor? Reactor是一种计算模型,常用于处理异步事件驱动的编程架构。它能够有效地管理和调度多个事件源的输入输出操作,尤其是在高并发的环境中。将IO的管理转变成了对事件的管理。
在Reactor模式中,主要有以下几个组件:
事件源(Event Source):这些是产生事件的实体,比如网络连接、文件IO等。
事件分发器(Event Demultiplexer):负责监控所有事件源,并将就绪的事件分发给相应的处理程序。
事件处理程序(Event Handler):定义如何处理特定类型的事件。
Reactor模式的优点在于,它能够有效地使用系统资源,减少上下文切换的开销,从而提高应用程序的性能。
Reactor的核心:不同的IO事件对应不同的回调函数:
register
callback
io -> event -> call back
listenfd -> EPOLLIN ->accept_cd
cli ...
1.1 网络IO与IO多路复用
2.1.1 网络IO与IO多路复用2.1.1.1思考以下操作,与网络IO有什么关系呢?
在生活中,我们使用微信,发送文字,视频,语音,
刷抖音时,打开一个视频,视频资源怎么到达我们的APP的?
github/gitlab , git clone 为什么代码能到达本地?
扫描共享单车二维码,能够打开车锁,
通过APP操纵空调
王者荣耀 释放技能 造成了伤害
server <-> client
以上流程中都有着server <-> client之间的交互,网络IO在日常生活中数据传输和交互中的重要作用。
2.1.1.2 客户端和服务端 进行通信:2.1.1.2.1 简易的客户端:1nc 192.168.133.128 3263
2.1.1.2.2 仅链接一次的简易服务端:123456789101112131415161718192021222324252627282930313233343536int main(){ int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct s ...
Cpp Primer 阅读笔记!
2. 变量和基本类型2.1变量2.1.1 对象的定义 具有某种数据类型的内存空间
2.1.2 变量的初始化 建议:当你第一次使用变量时再定义它,一般来说,在对象第一次被使用的地方附近定义它是一种好的选择,以为内这样做有助于更容易地找到变量的定义。更重要的是,当变量的定义与第一次被使用的地方很近时,我们也会赋给它一个比较合理的初始值。
变量的初始化和赋值是不同的,初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象当前的值擦除,而以一个新值来替代
定义于任何函数体之外的变量被初始化为0
定义在函数体内部的内置类型变量将不被初始化。一个未被初始化的内置类型变量的值是未定义的,如果试图拷贝或以其他形式访问此类值,将引发错误。
123456int main() { int a ; // 由于此处未给a进行初始化 printf("a=%d", a); //对a进行了访问,在VS中编译将会报错,而在linux中则可以正常运行,但是数值每次运行程序时,并不固定 printf("b=%d ...
HELLO WORLD!
Hello world!Hello world~
时间轴样式
2024-10-05 1.0 -> 1.1.0
你这个情况我还真没见过。
这样吧,
你先在steam搜索千恋*万花
点击购买安装好后立即运行打开千恋*万花,在主页面点击开始游戏进入游戏页面
然后依次选择说实话、不好说、我觉得很可爱、单独行动、摸摸头、感觉有点担心……和还是别说多余的话比较好
进入丛雨路线
2024-10-05 1.1.0 -> 1.1.1
你说的都对,
但是你应该打开bilibili搜索 nachoneko 或者中文名 甘城猫猫。
这就是 甘城猫猫 ,已经很晚了,甘城猫猫很担心你,甘城猫猫 希望你早点休息,不要熬夜,晚安。