進程:
-
一個程序是由指令和數據構成的,指令需要cpu加載,數據需要內存存儲。而進程就是用來管理內存,管理IO,管理指令的
-
進程相當於一個程序的實例,一個程序可以有多個實例(如瀏覽器),也可以只有一個實例(如qq音樂)
線程:
- 一個進程是由多個線程構成的
- 一個線程對應的一個指令流,由cpu進行加載
- 線程是最小的調度單元,用於cpu加載指令;進程是最小的資源分配單元。在windows中,進程相當於線程的容器
兩者的區別:
- 進程之間是相互獨立的,線程是屬於進程內部的
- 進程擁有共享資源,如內存空間,供內部的線程共享
- 進程間的通信較複雜,同一臺計算機的進程間通信稱爲IPC,不同計算機的進程間通信需要使用網絡,如HTTP
- 線程間的通信較簡單,且較輕量,線程間上下文切換成本要比進程間上下文切換成本低