【多線程學習筆記1】線程概述

1 線程概述

1.1 線程與進程

當一個程序進入內存運行時,即變成一個進程。進程是處於運行過程中的程序,並且具有一定的獨立功能,進程是系統進行資源分配和調度的一個獨立單元。

一般而言,進程包含如下三個特徵:獨立性、動態性、併發性。

獨立性:進程是系統中獨立存在的實體,它可以擁有自己獨立的資源,每個進程都擁有自己私有的地址空間。未經允許,其他用戶進程不可以直接訪問其他進程的地址空間。

動態性:程序只是一個靜態的指令集合,而進程是一個正在系統中活動的指令集合。在進程中加入了時間的概念。進程具有自己的生命週期和各種不同的狀態,這些概念在程序中都是不具備的。

併發性:多個進程可以在單個處理器上併發執行,多個進程之間不會互相影響。

多線程擴展了多進程的概念,使得同一個進程可以同時併發處理多個任務。線程也被稱作輕量級的進程,線程是進程的執行單元。就像進程在操作系統中的地位一樣,線程在程序中是獨立的、併發的執行流。

線程是進程的組成部分,一個進程可以擁有多個線程,一個線程必須有一個父進程。線程可以擁有自己的堆棧、自己的程序計數器和自己的局部變量,但不擁有系統資源,它與父進程的其他線程共享該進程所擁有的的全部資源。因爲多個線程共享父進程 裏的全部資源,因此需要確保線程不會妨礙同一個進程裏的其他線程。

線程是獨立運行的,同時它的執行也是搶佔式的,也就是說,當前運行的線程在任何時候都可能被掛起,以便另外一個線程可以運行。

一個線程可以創建和撤銷另一個線程,同一個進程中的多個線程之間可以併發執行。線程的調度和管理由進程本身負責完成。

簡而言之,一個程序運行後至少有一個進程,一個進程裏可以包含多個線程,但至少要包含一個線程。歸納起來也可以這樣說,操作系統可以同時執行多個任務,每個任務就是一個進程,進程可以同時執行多個任務,每個任務就是一個線程。

1.2 多線程的優勢

線程在程序中是獨立的、併發的執行流,與分隔的進程相比,進程中線程之間的隔離程度要小。他們共享內存、文件句柄和其他每個進程應有的狀態。

(1)線程比進程具有更高的性能:因爲同一個進程中的線程都有共性,共享同一個進程的虛擬空間,利用這些共享數據,線程很容易實現相互之間的通信。
(2)線程相比於進程開銷更低:當操作系統創建一個進程時,必須爲該進程分配獨立的內存空間,並分配大量相關的資源,但創建線程代價就小了很多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章