1. 程式人生 > >有關線程、進程、協程

有關線程、進程、協程

輕量級 實體 虛擬內存 cpu調度 控制 內存空間 集合 進程 完全

進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位,每個進程都有自己的獨立內存空間,不同進程通過進程間通信來通信。由於進程比較重量,占據獨立的內存,所以上下文進程間的切換開銷(棧,寄存器,虛擬內存,文件句柄等)比較大,但相對比較安全穩定。

線程是進程的一個實體,是cpu調度和分派的接班單位,它是比進程更小的能獨立運行的基本單位,線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的的全部資源。線程間通信主要通過共享內存,上下文切換,資源開銷較少,但相比進程,不夠穩定,容易丟失數據。

協程是一種用戶態的輕量級線程,協程的調度完全有用戶控制。協程擁有自己的寄存器上下文和棧。協程調度切換時,將寄存器上下文和棧保存到其他地方,在切回來的時候,恢復嫌棄那保存的寄存器上下文和棧,直接操作棧則基本沒有內核切換的開銷,可以不加鎖的訪問全局變量,所以上下文的切換非常快。

有關線程、進程、協程