Skip to content

Commit 5fb9eb5

Browse files
authored
Fix typo in reactor.md
1 parent 5dbbf7d commit 5fb9eb5

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

os/8_network_system/reactor.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Reactor 模式是灵活多变的,可以应对不同的业务场景,灵活在
109109
### 单 Reactor 单进程 / 线程
110110

111111

112-
一般来说,C 语言实现的是「**单 Reactor *单进程***」的方案,因为 C 语编写完的程序,运行后就是一个独立的进程,不需要在进程中再创建线程。
112+
一般来说,C 语言实现的是「**单 Reactor *单进程***」的方案,因为 C 语言编写完的程序,运行后就是一个独立的进程,不需要在进程中再创建线程。
113113

114114
而 Java 语言实现的是「**单 Reactor *单线程***」的方案,因为 Java 程序是跑在 Java 虚拟机这个进程上面的,虚拟机中有很多线程,我们写的 Java 程序只是其中的一个线程而已。
115115

@@ -140,7 +140,7 @@ Reactor 模式是灵活多变的,可以应对不同的业务场景,灵活在
140140
- 第一个缺点,因为只有一个进程,**无法充分利用 多核 CPU 的性能**
141141
- 第二个缺点,Handler 对象在业务处理时,整个进程是无法处理其他连接的事件的,**如果业务处理耗时比较长,那么就造成响应的延迟**
142142

143-
所以,单 Reactor 单进程的方案**不适用计算机密集型的场景,只适用于业务处理非常快速的场景**
143+
所以,单 Reactor 单进程的方案**不适用计算密集型的场景,只适用于业务处理非常快速的场景**
144144

145145
Redis 是由 C 语言实现的,它采用的正是「单 Reactor 单进程」的方案,因为 Redis 业务处理主要是在内存中完成,操作的速度是很快的,性能瓶颈不在 CPU 上,所以 Redis 对于命令的处理是单进程的方案。
146146

@@ -257,7 +257,7 @@ Proactor 正是采用了异步 I/O 技术,所以被称为异步网络模型。
257257

258258

259259

260-
因此,**Reactor 可以理解为「来了事件操作系统通知应用进程,让应用进程来处理」**,而 **Proactor 可以理解为「来了事件操作系统来处理,处理完再通知应用进程」**。这里的「事件」就是有新连接、有数据可读、有数据可写的这些 I/O 事件这里的「处理」包含从驱动读取到内核以及从内核读取到用户空间。
260+
因此,**Reactor 可以理解为「来了事件操作系统通知应用进程,让应用进程来处理」**,而 **Proactor 可以理解为「来了事件操作系统来处理,处理完再通知应用进程」**。这里的「事件」就是有新连接、有数据可读、有数据可写的这些 I/O 事件,这里的「处理」包含从驱动读取到内核以及从内核读取到用户空间。
261261

262262
举个实际生活中的例子,Reactor 模式就是快递员在楼下,给你打电话告诉你快递到你家小区了,你需要自己下楼来拿快递。而在 Proactor 模式下,快递员直接将快递送到你家门口,然后通知你。
263263

0 commit comments

Comments
 (0)