線程(Thread)多線程
在計算機科學中,一個線程是可以被一個調度器單獨管理的最小的程序片斷。在不一樣的操做系統中,線程與進程的實現不盡相同,但大多數狀況下,線程是進程的組成部分。多個線程可以在一個進程中存在,並同時(concurrently)執行和共享資源如內存,然而不一樣的進程不共享這些資源。尤爲是,在一個進程中的線程共享着執行代碼和變量的值。架構
單處理器與多處理器系統負載均衡
單處理器系統通常經過時間分片(time slicing)來實現多線程:CPU切換着不一樣的軟件線程(software thread)。這種上下文切換通常足夠快,因此用戶感知上線程或任務是並行運行着的。在多處理器的系統中,多線程能並行地運行,每一個處理器同時地執行不一樣的線程;在單核超線程(多硬件線程 hardware thread)的處理器中,不一樣的軟件線程也能並行執行(我:這個跟處理器核心內部架構應該有關,負載均衡的過程)。操作系統
線程 vs. 進程線程
線程與傳統的多任務操做系統進程的區別有:進程
1. 進程一般是獨立的,而線程是做爲進程的子集的存在;內存
2. 進程可以比線程攜帶更多的狀態信息,而在進程中的多個線程共享着內存和其餘資源等進程狀態;ci
3. 進程擁有分開的地址空間,而線程共享着地址空間;資源
4. 進程只能經過系統提供的進程間通訊(IPC)機制進行數據交流;多進程
5. 在一個進程中,線程間的上下文切換一般比進程間的上下文切換要快;
進程
進程是計算機程序執行時的一個實例(instance)。它包含程序代碼和它當前的活動。在不一樣的操做系統中,進程能夠由許多線程並行執行而組成。
計算機程序是一種被動的指令集,而進程就是這些指令實際的執行過程。多個進程可能與同一段程序相關;好比,對一樣一段程序,運行多個實例,這經常意味着多個進程被執行了。
多任務處理是一種容許多進程共享多處理器和其餘系統資源的方法。每一個CPU一次執行單個任務。然而,多任務處理容許在每一個處理器在任務間切換而沒必要等待每一個任務完成。在不一樣的操做系統中,這種切換可能發生在I/O操做中,或者其餘須要被切換的狀況,如硬件停止(interrupt)。