線程是cpu使用的基本單元,它由線程id,程序計數器,寄存器集合和棧組成,它與屬于同一進程的其他線程共享代碼段,數據段和其他操作系統資源。
傳統重量級的進程只有單個控制線程,如果進程有多個控制線程,那么它能同時做多個任務。
運行在現代桌面pc上的許多軟件包都是多線程的,一個應用程序通常是作為一個具有多個控制線程的獨立進程實現的,例如,網頁瀏覽器可能 有一個線程用于顯示圖像和文本,另一個線程用于從網絡接收數據。
進程創建很消耗時間和資源
多線程編程有如下4個優點 :
- 響應度高:如果 對一個交互程序采用多線程,那么即使其部分阻塞或執行較冗長的操作,該程序仍能繼續執行,從而增加了對用戶的響應程度,例如,多線程Web瀏覽器在用一個線程裝入圖像時,能通過另一個線程與用戶交互。
- 資源共享:線程默認共享它們所屬進程的內存和資源,代碼和數據共享的優點是它能允許一個應用程序在同一地址空間有多個不同的活動線程。
- 經濟:進程創建所需要的內存和資源的分配比較昂貴,由于線程能共享它們所屬進程的資源,所以創建和切換線程會更為經濟,
- 多處理器體系結構的利用: 多線程的優點之一是能充分使用多處理器體系結構,以便每個進程能并行運行在不同的處理器上,不管有多少CPU,單線程進程只能運行在一個CPU上,在多CPU上使用多線程加強了并發功能。
小結
線程是進程內的控制流,多線程進程在同一地址空間內包含多個不同的控制流,多線程的優點包括對用戶響應的改進、進程內的資源共享、經濟和利用多處理器體系結構的能力。