區別:1、進程是系統中正在運行的一個程序,而線程是屬於進程的,一個進程可以擁有多個線程,線程是程式中的執行者;2、進程之間不會共享任何的狀態,而執行緒之間可以共享變數。
本教學操作環境:Windows10系統、Swoole4版、DELL G3電腦
#進程
1、進程之間不共享任何狀態
2、進程的調度由作業系統完成
3、每個進程都有自己獨立的記憶體空間
4、進程間通訊主要是透過訊號傳遞的方式來實現的,實現方式有多種,訊號量、管道、事件等,任何一種方式的通訊效率都需要過內核,導致通訊效率比較低
5、由於是獨立的記憶體空間,上下文切換的時候需要保存先呼叫堆疊的資訊、cpu各寄存器的資訊、虛擬記憶體、以及開啟的相關句柄等信息,所以導致上下文進程間切換開銷很大,通訊麻煩。
線程
1、線程之間共享變量,解決了通訊麻煩的問題對於變量的訪問需要鎖定
2、一個進程可以擁有多個線程,但是其中每個線程會共享父進程像操作系統申請資源,這個包括虛擬內存、文件等,由於是共享資源,所以創建線程所需要的系統資源佔用比進程小很多,相應的可創建的線程數量也變得相對多得多。
3、另外在調度方面也是由於記憶體是共享的,所以上下文切換的時候需要保存的東西就像對少一些,這樣一來上下文的切換也變得高效。
什麼是進程?
進程是系統中正在運行的程序,程式一旦運行就是進程。
行程可以看成程式執行的一個實例。
Tags:一個進程無法存取另一個進程的變數和資料結構,如果想讓一個進程存取另一個進程的資源,需要使用進程間通信,例如管道,文件,套接字等。
什麼是執行緒?
執行緒屬於進程,是程式的執行者。
一個行程至少包含一個主線程,也可以有更多的子線程,每個執行緒使用其所屬行程的堆疊空間。
執行緒是行程的一個實體,是行程的一條執行路徑。
Tags:同一行程內的多個執行緒會共用部分狀態,多個執行緒可以讀寫同一塊記憶體。
推薦學習:swoole教學
以上是swoole進程與執行緒有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!