程式和執行緒有什麼區別?(Process and Threads)程式之間和執行緒之間是如何通訊的?

Tech In Pieces發表於2020-11-02

一個應用程式可以有多個程式, 一個程式可以包含多個執行緒。
兩者的區別:
一句話來說就是這兩者根本就不是同一層級的概念 所以全部都是區別。
但是,兩者存在下列區別:
首先是在系統開銷上,程式要比執行緒大。因為在建立或撤消程式時,系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消執行緒時的開銷。
第二點是在資源管理方面的不同,程式有獨立的地址空間 因此一個程式崩潰不會對其他程式產生影響。而執行緒只是一個程式中的不同執行路徑,而執行緒沒有獨立的地址空間,一個執行緒崩潰那麼所對應的程式也會崩潰。所以多程式的程式比多執行緒的程式要健壯

程式之間如何通訊?
是父子程式關係的話可以採用管道通訊。如果沒有親緣關係的程式之間可以通過命名管道通訊。或者可以用訊號量進行通訊。訊號量就是一個計數器 用來控制多個程式對一個資源進行訪問。還可以用共享記憶體進行通訊。

執行緒之間如何通訊?
有三種通訊機制,鎖機制(互斥鎖,讀寫鎖),訊號機制和訊號量機制

相關文章