1樓:匿名使用者
多執行緒(英語:multithreading),是指從軟體或者硬體上實現多個執行緒併發執行的技術。具有多執行緒能力的計算機因有硬體支援而能夠在同一時間
執行多於一個執行緒,進而提升整體處理效能。具有這種能力的系統包括對稱多處理機、多核心處理器以及晶片級多處理(chip-level
multithreading)或同時多執行緒(simultaneous multithreading)處理器。[1]
在一個程式中,這些獨立執行的程式片段叫作「執行緒」(thread),利用它程式設計的概念就叫作「多執行緒處理(multithreading)」。具有多線
程能力的計算機因有硬體支援而能夠在同一時間執行多於一個執行緒(臺灣譯作「執行緒」),進而提升整體處理效能。
優點:1·使用執行緒可以把佔據時間長的程式中的任務放到後臺去處理
2·使用者介面可以更加吸引人,這樣比如使用者點選了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度
3·程式的執行速度可能加快
4·在一些等待的任務實現上如使用者輸入、檔案讀寫和網路收發資料等,執行緒就比較有用了。在這種情況下可以釋放一些珍貴的資源如記憶體佔用等等。
5.多執行緒技術在ios軟體開發中也有舉足輕重的位置。
缺點:1如果有大量的執行緒,會影響效能,因為作業系統需要在它們之間切換。
2·更多的執行緒需要更多的記憶體空間。
3·執行緒可能會給程式帶來更多「bug」,因此要小心使用。
4·執行緒的中止需要考慮其對程式執行的影響。
2樓:匿名使用者
是為了提高cpu的利用率
可以把一個正在執行的軟體看做一個程序,就像一個大的管道,這個管道不運送什麼東西,但裡面有很多個小的管道,每個小管負責的東西不同~~而這些小管道就可以看做是一個個執行緒~如果執行的是一個單執行緒的程式的話,而這個執行緒需要連續執行幾個功能時,如果正在執行的那個功能因碰到一個等待或者睡眠的指令的話,他就會停在那裡不做任何事,此是這個cpu就空閒在那裡,同時還會等待知道程式重新繼續執行~~如果使用多執行緒技術,那麼可以把這幾個功能同時(並不是絕對意義上的同時)執行,當其中一個功能遇到睡眠指令的時候,其他沒有睡眠的繼續執行,這個可以花更短的時間,讓cpu更充分的被利用來完成需要的事情~執行緒通常共享一個**區,但有各自獨立的資料儲存區
個人見解
僅做參考的哦
c++類的靜態成員,在多執行緒訪問時需要加保護嗎?
3樓:匿名使用者
在多執行緒中使用同一個靜態方法時,每個執行緒使用各自的例項欄位(instance field)的副本,而共享一個靜態欄位(static
field)。所以說,如果該靜態方法不去操作一個靜態成員,只在方法內部使用例項欄位(instance
field),不會引起安全性問題。但是,如果該靜態方法操作了一個靜態欄位,則需要靜態方法中採用互斥訪問的方式進行安全處理。
程序和執行緒是什麼,有什麼區別呢
4樓:啃芝士
程序和執行緒是什麼關係?有什麼區別?
5樓:単聲噵鎝瞹眛
程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位.
執行緒是程序的一個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源.
程序和執行緒的主要差別在於它們是不同的作業系統資源管理方式。程序有獨立的地址空間,一個程序崩潰後,在保護模式下不會對其它程序產生影響,而執行緒只是一個程序中的不同執行路徑。執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。
但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程序。
1、簡而言之,一個程式至少有一個程序,一個程序至少有一個執行緒。
2、執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。
3、 另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。
4、 執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
5、從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。
一個執行緒可以建立和撤銷另一個執行緒;同一個程序中的多個執行緒之間可以併發執行。
相對程序而言,執行緒是一個更加接近於執行體的概念,它可以與同程序中的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。
擴充套件資料:
區別程式
程式是指令和資料的有序集合,其本身沒有任何執行的含義,是一個靜態的概念。而程序是程式在處理機上的一次執行過程,它是一個動態的概念。
程式可以作為一種軟體資料長期存在,而程序是有一定生命期的。程式是永久的,程序是暫時的。
程序更能真實地描述併發,而程式不能;
程序是由程序控制塊、程式段、資料段三部分組成;
程序具有建立其他程序的功能,而程式沒有。
同一程式同時執行於若干個資料集合上,它將屬於若干個不同的程序,也就是說同一程式可以對應多個程序。
在傳統的作業系統中,程式並不能獨立執行,作為資源分配和獨立執行的基本單元都是程序。
執行緒程序和執行緒關係
通常在一個程序中可以包含若干個執行緒,它們可以利用程序所擁有的資源,在引入執行緒的作業系統中,通常都是把程序作為分配資源的基本單位,而把執行緒作為獨立執行和獨立排程的基本單位,由於執行緒比程序更小,基本上不擁有系統資源,故對它的排程所付出的開銷就會小得多,能更高效的提高系統內多個程式間併發執行的程度。
當下推出的通用作業系統都引入了執行緒,以便進一步提高系統的併發性,並把它視為現代作業系統的一個重要指標。
控制程序控制是程序管理中最基本的功能。它用於建立一個新程序,終止一個已完成的程序,或者去終止一個因出現某事件而使其無法執行下去的程序,還可負責程序執行中的狀態轉換。
6樓:陽光的弓谷芹
程序
程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位.
執行緒
執行緒是程序的一個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源.
7樓:愛尚實訓_博雅
一個程式有一個或多個程序,一個程序有一個或多個執行緒.
程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。
OA辦公系統多執行緒技術有何好處
1 提高cpu的使用率 oa辦公系統採用多執行緒的方式去同時完成幾件事情而互不干擾。目前世界上大多數計算機只有一塊cpu.因此,充分利用cpu資源顯得尤為重要。當執行單執行緒程式時,由於在oa程式發生阻塞時cpu可能會處於空閒狀態。這將造成大量的計算資源的浪費。而在程式中使用多執行緒可以在某一個執行...
c 類的靜態成員,在多執行緒訪問時需要加保護嗎?
在多執行緒中使用同一個靜態方法時,每個執行緒使用各自的例項欄位 instance field 的副本,而共享一個靜態欄位 static field 所以說,如果該靜態方法不去操作一個靜態成員,只在方法內部使用例項欄位 instance field 不會引起安全性問題。但是,如果該靜態方法操作了一個靜...
多工和單任務,多執行緒和單執行緒各有什麼區別呢
多工單任務不知你指的什麼,是系統的還是程式的。多執行緒和單執行緒倒是略知一二。執行緒是依託於程序存在的,一個程序裡要是不想被一個任務堵塞的話通常用多執行緒。打個比方好理解。單執行緒就是獨木橋,多執行緒就是寬敞的橋,獨木橋上一個人摔倒了整個通道都堵塞了,寬敞的橋有人摔倒了,一條線路堵塞了,其他的人可以...