多線程總結之旅(1):線程VS進程

1、進程:進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,也就是應用程序的執行實例,進程是系統進行資源分配和調度的一個獨立單位。每一個進程是由私有的虛擬地址空間、代碼、數據和其它各類系統資源組成,進程在運行過程當中建立的資源隨着進程的終止而被銷燬,所使用的系統資源在進程終止時被釋放或關閉。函數

2、線程: 線程是程序中的一個執行流,一個進程中能夠包含多個線程,每一個線程都有本身的專有寄存器(棧指針、程序計數器等),但代碼區是共享的,即不一樣的線程能夠執行一樣的函數。線程

3、關係:指針

  通常來講,一個獨立的程序運行時就會產生一個進程,而一個進程中能夠包括多個線程,分別執行不一樣的功能。進程

4、區別:資源

  1.地址空間和其它資源:進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其它進程不可見。同步

  2.通訊:進程間通訊IPC,線程間能夠直接讀寫進程數據段(如全局變量)來進行通訊——須要進程同步和互斥手段的輔助,以保證數據的一致性。變量

  3.調度和切換:線程上下文切換比進程上下文切換要快得多。(不少地方常常出現「上下文」這個詞,其實你能夠這樣理解:上下文其實就是線程或者進程運行時須要的資源和堆棧等信息)。程序

相關文章
相關標籤/搜索