多线程
并发实体为线程;开发难点:锁的使用以及粒度控制;
线程, 是程序执行流的最小单元, 是进程中的一个实体, 是被系统独立调度和分派的基本单位, 线程自己不拥有系统资源, 些在运行中必不可少的资源, 但它可与同属一个进程的其它线程共享进程资源, 线程的切换一般也由操作系统调度.
(运行环境)隔离性差,(运行数据)统一性强;
多进程
并发实体为进程;开发难点:服务粒度控制,服务间数据一致性问题;最终一致性强一致性.
进程的缺点是创建、销毁以及切换的开销比较大.
(运行环境)隔离性强,(运行数据)统一性差.
csp模型
以go为例,并发实体为 goroutine,也就是协程(轻量级线程);相较于线程,优点在于可以轻松创建上百万个而不会导致系统资源哀竭; channel
协程(创建、销毁以及切换)交由用户来调度
actor模型
并发实体为actor, 也就是轻量级进程; 相较于进程, 优点在于可以轻松创建上百万个而不会导致系统资源衰竭
actor交由用户来调度
erlang从语言层面支持 actor, skynet从框架层面支持actor