并发编程模型
现代操作系统提供三种基本的构造并发程序的方法
- 进程
- 线程
- I/O 多路复用
PPC (Process per Connection)
新的连接就新建一个进程处理
优点:简单,进程有独立的地址空间、
缺点:进程间通信复杂,操作系统进程调度和切换压力大,
TPC(Thread Per Connection)
新的连接就新建一个线程
优点:无需进程间通信
缺点:复杂,控制不好可能导致整个进程退出(例如内存越界)
PPC和TPC都可以用预创建资源池的方式来复用.
I/O 多路复用
-
当多条连接共用一个阻塞对象后,进程只需要在一个阻塞对象上等待,而无需轮训所有连接 常见实现方式有select、epoll、kqueue等
-
当某条连接有新的数据可以处理时,操作系统会通知进程,进程从阻塞状态返回,开始进行业务处理。
Reactor
i/o多路复用结合资源池
非阻塞同步网络模型
Proactor
异步I/O
Select、Poll、Epoll区别:
https://cloud.tencent.com/developer/article/1005481
java nio