2分钟
3分钟:
进程 线程协程区别?
当系统遇到瓶颈时候,进程 线程 协程 配合使用, 实现一个多线程的Reactor可扩展网络应用。
场景限定:
这里只讨论
一个大任务拆分成多个小任务,从串行执行到并发执行情况。
进程:
进程适合水平扩展,适合一个分布式系统,进程之间传递数据,跨内核,跨主机 切换。
传输时间大于任务本身就不合适。
线程:
线程适合垂直扩展,利用多核,系统多核有上限的,在增加线程 密集cpu计算提升。
线程更适合同时 io计算,和cpu计算任务。例如 视频播放一遍下载视频文件,一遍编解码。
线程之间通行注意线程安全。锁引起线程阻赛。被动切换。
协程:
- 是单线程更适合io密集
- 协程能代替 单线程做异步非阻赛,不一样地方 协程想线程一样阻赛调用,遇到阻赛还占用cpu。
更适合协程之间频繁协作。
- 在遇到io阻赛和协作阻赛情况下更好利用cpu。主动切换。