什麼是執行緒,什麼是多執行緒

時間 2022-01-12 13:45:17

1樓:匿名使用者

說得簡單一點就是程序的分支

2樓:抄碧白

執行緒是cpu獨立執行和獨立排程的基本單位

3樓:匿名使用者

執行緒也被稱為輕量程序電腦科學術語,指執行中的程式的排程單位。

執行緒是程序中的實體,一個程序可以擁有多個執行緒,一個執行緒必須有一個父程序。執行緒不擁有系統資源,只有執行必須的一些資料結構;它與父程序的其它執行緒共享該程序所擁有的全部資源。執行緒可以建立和撤消執行緒,從而實現程式的併發執行。

一般,執行緒具有就緒、阻塞和執行三種基本狀態。

在多**處理器的系統裡,不同執行緒可以同時在不同的**處理器上執行,甚至當它們屬於同一個程序時也是如此。大多數支援多處理器的作業系統都提供程式設計介面來讓程序可以控制自己的執行緒與各處理器之間的關聯度

什麼是執行緒?

4樓:坐著烏龜去游泳

執行緒(英文:thread),臺灣地區譯為執行緒(英文:thread ofexecution)、緒程,作業系統技術中的術語,是作業系統能夠進行運算排程的最小單位,它被包涵在程序之中,是行程中的實際運作單位。

一條執行緒指的是程序中一個單一順序的控制流,一個程序中可以並行多個執行緒,每條執行緒並行執行不同的任務。在unix systemv及sunos中也被稱為輕量程序(lightweight processes),但輕量程序更多指核心執行緒(kernel thread),而把使用者執行緒(user thread)稱為執行緒。電腦科學術語,指執行中的程式的排程單位。

執行緒具有以下屬性。

1)輕型實體

執行緒中的實體基本上不擁有系統資源,只是有一點必不可少的、能保證獨立執行的資源,比如,在每個執行緒中都應具有一個用於控制執行緒執行的執行緒控制塊tcb,用於指示被執行指令序列的程式計數器、保留區域性變數、少數狀態引數和返回地址等的一組暫存器和堆疊。

2)獨立排程和分派的基本單位。

在多執行緒os中,執行緒是能獨立執行的基本單位,因而也是獨立排程和分派的基本單位。由於執行緒很「輕」,故執行緒的切換非常迅速且開銷小。

3)可併發執行。

在一個程序中的多個執行緒之間,可以併發執行,甚至允許在一個程序中所有執行緒都能併發執行;同樣,不同程序中的執行緒也能併發執行。

4)共享程序資源。

在同一程序中的各個執行緒,都可以共享該程序所擁有的資源,這首先表現在:所有執行緒都具有相同的地址空間(程序的地址空間),這意味著,執行緒可以訪問該地址空間的每一個虛地址;此外,還可以訪問程序所擁有的已開啟檔案、定時器、訊號量機構等。

什麼是多執行緒

5樓:翅膀的初衷

簡單的來說,你的winrom有一個主執行緒在執行它,如果執行中,某個方法卡住了,就會造成這程式卡死(假死)的狀態,你可以再開一個執行緒,去執行這個方法(比較卡的方法),這樣就是這個執行緒卡死了,也不會影響主執行緒,打個形象點的比方,你打星際,主機在造農民,那麼你其它所有的地方都動不了,包括在採礦的農民,要等你造完了才會進行若無事採礦的操作,如果你即要造農民,又要同時去採礦,這就是多執行緒了,呵呵

什麼叫執行緒

6樓:blackpink_羅捷

執行緒(英語:thread)是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。

一條執行緒指的是程序中一個單一順序的控制流,一個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。

在unix system v及sunos中也被稱為輕量程序(lightweight processes),但輕量程序更多指核心執行緒(kernel thread),而把使用者執行緒(user thread)稱為執行緒。

7樓:皇夜柳摩滌

究竟什麼是執行緒呢?

一個執行緒是給定的指令的序列

(你所編寫的**),一個棧(在給定的方法中定義的變數),以及一些共享資料(類一級的變數)。執行緒也可以從全域性類中訪問靜態資料。

一個執行緒必須處於如下四種可能的狀態之一,這四種狀態為:

初始態:一個執行緒呼叫了new方法之後,並在呼叫start方法之前的所處狀態。在初始態中,可以呼叫start和stop方法。

runnable:一旦執行緒呼叫了start

方法,執行緒就轉到runnable

狀態,注意,如果執行緒處於runnable狀態,它也有可能不在執行,這是因為還有優先順序和排程問題。

阻塞/nonrunnable:執行緒處於阻塞/nonrunnable狀態,這是由兩種可能性造成的:要麼是因掛起而暫停的,要麼是由於某些原因而阻塞的,例如包括等待io請求的完成。

退出:執行緒轉到退出狀態,這有兩種可能性,要麼是run方法執行結束,要麼是呼叫了stop方法。

最後一個概念就是執行緒的優先順序,執行緒可以設定優先順序,高優先順序的執行緒可以安排在低優先順序執行緒之前完成。一個應用程式可以通過使用執行緒中的方法setpriority(int),來設定執行緒的優先順序大小。

8樓:寒雪美美

執行緒是指程式的一個指令執行序列,win32 平臺支援多執行緒程式,允許程式中存在多個執行緒。 在單 cpu 系統中,系統把 cpu 的時間片按照排程演算法分配給各個執行緒,因此各執行緒實際上是分時執行的,在多 cpu 的 windows nt 系統中, 同一個程式的不同執行緒可以被分配到不同的 cpu 上去執行。由於一個程式的各執行緒是在相同的地址空間執行的,因此設及到了如何共享記憶體, 如何通訊等問題,這樣便需要處理各執行緒之間的同步問題,這是多執行緒程式設計中的一個難點。

執行緒,也被稱為輕量程序(lightweight processes)。電腦科學術語,指執行中的程式的排程單位。

執行緒是程序中的實體,一個程序可以擁有多個執行緒,一個執行緒必須有一個父程序。執行緒不擁有系統資源,只有執行必須的一些資料結構;它與父程序的其它執行緒共享該程序所擁有的全部資源。執行緒可以建立和撤消執行緒,從而實現程式的併發執行。

一般,執行緒具有就緒、阻塞和執行三種基本狀態。

在多**處理器的系統裡,不同執行緒可以同時在不同的**處理器上執行,甚至當它們屬於同一個程序時也是如此。大多數支援多處理器的作業系統都提供程式設計介面來讓程序可以控制自己的執行緒與各處理器之間的關聯度(affinity)。

9樓:超超

您好通俗點說,程序是一個具體的應用程式,執行緒是程序中的一個分支,為單獨完成程式中的某一項或一組功能而存在。

應用程式可以有一個或多個程序,一個程序可以有一個或多個執行緒,其中一個是主執行緒。謝謝

什麼叫程序?什麼叫執行緒?

10樓:為江山放棄了愛

程序(process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。

執行緒,有時被稱為輕量程序(lightweight process,lwp),是程式執行流的最小單元。一個標準的執行緒由執行緒id,當前指令指標(pc),暫存器集合和堆疊組成。

擴充套件資料

程序和執行緒的區別體現在以下幾個方面:

1、地址空間和其他資源(如開啟檔案):程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其他程序內不可見。

2、通訊:程序間通訊ipc(管道,訊號量,共享記憶體,訊息佇列),執行緒間可以直接獨寫程序資料段(如全域性變數)來程序通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。

3、排程和切換:執行緒上下文切換比程序上下文切換快得多。

4、在多執行緒os中,程序不是一個可執行的實體。

11樓:月下者

程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位。

執行緒是程序的一個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源。

擴充套件資料

程序和執行緒主要差別:

1、在於它們是不同的作業系統資源管理方式。程序有獨立的地址空間,一個程序崩潰後,在保護模式下不會對其它程序產生影響,而執行緒只是一個程序中的不同執行路徑。

2、執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。

3、但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程序。

4、地址空間和其它資源(如開啟檔案):程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。

5、通訊:程序間通訊ipc,執行緒間可以直接讀寫程序資料段(如全域性變數)來進行通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。

6、排程和切換:執行緒上下文切換比程序上下文切換要快得多。

7、在多執行緒os中,執行緒不是一個可執行的實體。

12樓:之何勿思

程序和執行緒都是由作業系統所體現的程式執行的基本單元,系統利用該基本單元實現系統對應用的併發性。

程序和執行緒的區別在於:

簡而言之,一個程式至少有一個程序,一個程序至少有一個執行緒。執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。

另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

13樓:狼道刀

1、程序是系統中正在執行的一個程式,程式一旦執行就是程序。

程序可以看成程式執行的一個例項。程序是系統資源分配的獨立實體,每個程序都擁有獨立的地址空間。一個程序無法訪問另一個程序的變數和資料結構,如果想讓一個程序訪問另一個程序的資源,需要使用程序間通訊,比如管道,檔案,套接字等。

一個程序可以擁有多個執行緒,每個執行緒使用其所屬程序的棧空間。執行緒與程序的一個主要區別是,統一程序內的一個主要區別是,同一程序內的多個執行緒會共享部分狀態,多個執行緒可以讀寫同一塊記憶體(一個程序無法直接訪問另一程序的記憶體)。

2、執行緒是程序的一個實體,是程序的一條執行路徑。

執行緒是程序的一個特定執行路徑。當一個執行緒修改了程序的資源,它的兄弟執行緒可以立即看到這種變化。同時,每個執行緒還擁有自己的暫存器和棧,其他執行緒可以讀寫這些棧記憶體。

擴充套件資料

程序和執行緒的區別體現在以下幾個方面:

1.地址空間和其他資源(如開啟檔案):程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其他程序內不可見。

2.通訊:程序間通訊ipc(管道,訊號量,共享記憶體,訊息佇列),執行緒間可以直接獨寫程序資料段(如全域性變數)來程序通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。

3.排程和切換:執行緒上下文切換比程序上下文切換快得多。

4.在多執行緒os中,程序不是一個可執行的實體。

多執行緒程式有什麼優點?多執行緒的程式有什麼好處?

執行更快。如果一個程式可以同時讓幾個執行緒同時執行,那麼也就是速度快了幾倍。玩網頁遊戲的時候,vip可以享受同時兩個建築升級,而非vip就只能一個接個升級,你說那個快?和這個一樣。多執行緒的程式有什麼好處?多執行緒 英語 multithreading 是指從軟體或者硬體上實現多個執行緒併發執行的技術...

關於多執行緒的問題

你都說這麼明白了,還問什麼?不明白 handle winapi createthread in lpsecurity attributes lpthreadattributes,in size t dwstacksize,in lpthread start routine lpstartaddres...

C Timer lock多執行緒的幾點疑問

大部分算是對了的,但是你似乎沒明確lock的目的。timer與lock似乎沒什麼關係 因為lock就像鑰匙,需要大家都可以訪問 且唯一的屬性你如何確定label屬性沒問題,恰恰相反,我可以給你寫出有問題的程式。你可以定義個全域性整數cnt,初始為0,開啟n個執行緒,同時對label執行獲取和設定te...