多线程

并发实体为线程;开发难点:锁的使用以及粒度控制;

线程, 是程序执行流的最小单元, 是进程中的一个实体, 是被系统独立调度和分派的基本单位, 线程自己不拥有系统资源, 些在运行中必不可少的资源, 但它可与同属一个进程的其它线程共享进程资源, 线程的切换一般也由操作系统调度.

(运行环境)隔离性差,(运行数据)统一性强;

多进程

并发实体为进程;开发难点:服务粒度控制,服务间数据一致性问题;最终一致性强一致性.

进程的缺点是创建、销毁以及切换的开销比较大.

(运行环境)隔离性强,(运行数据)统一性差.

csp模型

以go为例,并发实体为 goroutine,也就是协程(轻量级线程);相较于线程,优点在于可以轻松创建上百万个而不会导致系统资源哀竭; channel

协程(创建、销毁以及切换)交由用户来调度

actor模型

并发实体为actor, 也就是轻量级进程; 相较于进程, 优点在于可以轻松创建上百万个而不会导致系统资源衰竭

actor交由用户来调度

erlang从语言层面支持 actor, skynet从框架层面支持actor

Q.E.D.