什么是多線程 什么是多線程并發


什么是多線程 什么是多線程并發

文章插圖
大家好,小耶來為大家解答以上的問題 。什么是多線程并發,什么是多線程這個很多人還不知道,現在讓我們一起來看看吧!
1、多線程(英語:multithreading)是指從軟件或者硬件上實現多個線程并發執行的技術 。
2、具有多線程能力的計算機因有硬件支持而能夠在同一時間執行多于一個線程,進而提升整體處理性能 。
3、具有這種能力的系統包括對稱多處理機、多核心處理器以及芯片級多處理(Chip-level multithreading)或同時多線程(Simultaneous multithreading)處理器 。
4、 軟件多線程 , 即便處理器只能運行一個線程,操作系統也可以通過快速的在不同線程之間進行切換,由于時間間隔很小,來給用戶造成一種多個線程同時運行的假象 。
5、這樣的程序運行機制被稱為軟件多線程 。
6、定義在計算機編程中,一個基本的概念就是同時對多個任務加以控制 。
7、許多程序設計問題都要求程序能夠停下手頭的工作,改為處理其他一些問題,再返回主進程 。
8、可以通過多種途徑達到這個目的 。
9、最開始的時候,那些掌握機器低級語言的程序員編寫一些“中斷服務例程” , 主進程的暫停是通過硬件級的中斷實現的 。
10、盡管這是一種有用的方法 , 但編出的程序很難移植,由此造成了另一類的代價高昂問題 。
11、中斷對那些實時性很強的任務來說是很有必要的 。
12、但對于其他許多問題 , 只要求將問題劃分進入獨立運行的程序片斷中,使整個程序能更迅速地響應用戶的請求 。
13、最開始,線程只是用于分配單個處理器的處理時間的一種工具 。
14、但假如操作系統本身支持多個處理器,那么每個線程都可分配給一個不同的處理器,真正進入“并行運算”狀態 。
15、從程序設計語言的角度看,多線程操作最有價值的特性之一就是程序員不必關心到底使用了多少個處理器 。
16、程序在邏輯意義上被分割為數個線程;假如機器本身安裝了多個處理器,那么程序會運行得更快,毋需作出任何特殊的調校 。
17、根據前面的論述,大家可能感覺線程處理非常簡單 。
18、但必須注意一個問題:共享資源!如果有多個線程同時運行,而且它們試圖訪問相同的資源,就會遇到一個問題 。
19、舉個例子來說,兩個線程不能將信息同時發送給一臺打印機 。
20、為解決這個問題,對那些可共享的資源來說(比如打印機),它們在使用期間必須進入鎖定狀態 。
21、所以一個線程可將資源鎖定,在完成了它的任務后 , 再解開(釋放)這個鎖,使其他線程可以接著使用同樣的資源 。
22、多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率 。
23、線程是在同一時間需要完成多項任務的時候實現的 。
24、最簡單的比喻多線程就像火車的每一節車廂,而進程則是火車 。
25、車廂離開火車是無法跑動的,同理火車也不可能只有一節車廂 。
26、多線程的出現就是為了提高效率 。
27、同時它的出現也帶來了一些問題 。
28、用途在大多數研究領域內是要求線程調度程序要能夠快速選擇其中一個已就緒線程去運行,而不是一個一個運行而降低效率 。
29、所以要讓調度程序去分辨線程的優先級是很重要的 。
30、而線程調度程序可能是以硬件、軟件 , 或是軟硬件并存的形式存在 。
31、而另一個研究領域則是要研究何種事件(高速緩存失敗、內部運行連續性、使用DMA等)會造成線程切換 。
32、如果多線程的方案會復制所有軟件可見的狀態,包括特許的控制登錄、TLB 等,那就能夠讓虛擬機去創造各式線程 。
33、這樣子就允許在相同的處理器中每個線程跑各自的操作系統 。
34、換句話說,如果只有存儲了用戶模式的狀態,就能夠讓相同的裸晶大小的芯片在一段時間內處理更多的線程 。
35、線程是操作系統能夠進行運算調度的最小單位;它被包含在進程之中,是進程中的實際運作單位 。
36、多線程,是指從軟件或者硬件上實現多個線程并發執行的技術 。
37、具有多線程能力的計算機因有硬件支持而能夠在同一時間執行多于一個線程,進而提升整體處理性能 。
38、簡單來說:線程是程序中一個單一的順序控制流程;而多線程就是在單個程序中同時運行多個線程來完成不同的工作 。
39、多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率 。
40、多線程是在同一時間需要完成多項任務的時候實現的 。
41、多線程的優缺點優點:1)、多線程技術可以加快程序的運行速度,使程序的響應速度更快 , 因為用戶界面可以在進行其它工作的同時一直處于活動狀態2)、可以把占據長時間的程序中的任務放到后臺去處理 , 同時執行其他操作,提高效率3)、當前沒有進行處理的任務時可以將處理器時間讓給其它任務4)、可以讓同一個程序的不同部分并發執行 , 釋放一些珍貴的資源如內存占用等等5)、可以隨時停止任務6)、可以分別設置各個任務的優先級以優化性能缺點:1)、因為多線程需要開辟內存,而且線程切換需要時間因此會很消耗系統內存 。
42、2)、線程的終止會對程序產生影響3)、由于多個線程之間存在共享數據,因此容易出現線程死鎖的情況4)、對線程進行管理要求額外的 CPU開銷 。
43、線程的使用會給系統帶來上下文切換的額外負擔 。
44、多線程是這樣一種機制,它允許在程序中并發執行多個指令流 , 每個指令流都稱為一個線程,彼此間互相獨立 。
45、線程又稱為輕量級進程,它和進程一樣擁有獨立的執行控制,由操作系統負責調度 。
【什么是多線程 什么是多線程并發】本文到此分享完畢,希望對大家有所幫助 。