不共享任何狀態異步
調度由操做系統完成操作系統
有獨立的內存空間(上下文切換的時候須要保存棧、cpu寄存器、虛擬內存、以及打開的相關句柄等信息,開銷大)線程
通信主要經過信號傳遞的方式來實現(實現方式有多種,信號量、管道、事件等,通信都須要過內核,效率低)協程
共享變量(解決了通信麻煩的問題,可是對於變量的訪問須要加鎖)進程
調度由操做系統完成事件
一個進程能夠有多個線程,每一個線程會共享父進程的資源(建立線程開銷佔用比進程小不少,可建立的數量也會不少)內存
通信除了可以使用進程間通信的方式,還能夠經過共享內存的方式進行通訊(經過共享內存通訊比經過內核要快不少)資源
線程的使用會給系統帶來上下文切換的額外負擔。同步
調度徹底由用戶控制class
一個線程(進程)能夠有多個協程
每一個線程(進程)循環按照指定的任務清單順序完成不一樣的任務(當任務被堵塞時,執行下一個任務;當恢復時,再回來執行這個任務;任務間切換隻須要保存任務的上下文,沒有內核的開銷,能夠不加鎖的訪問全局變量)
協程須要保證是非堵塞的且沒有相互依賴
協程基本上不能同步通信,多采用異步的消息通信,效率比較高
做者:倚天杖連接:https://www.imooc.com/article/40799來源:慕課網