什麼是執行緒 同一程序中的多個執行緒有哪些是共用的,哪些是私用的

時間 2025-02-09 13:40:06

1樓:司馬刀劍

執行緒的定義:執行緒(thread),臺灣地區譯為執行緒緒程,作業系統技術中的術語,是作業系統能夠進行運算排程的最小單位,它被包涵在程序之中,是行程中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以並行多個執行緒,每條執行緒並行執行不同的任務。

在unix systemv及sunos中也被稱為輕量程序(lightweight processes),但輕量程序更多指核心執行緒(kernel thread),而把使用者執行緒(user thread)稱為執行緒。電腦科學術語,指執行中的程式的排程單位。

執行緒(thread)是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。

執行緒是獨立排程和分派的基本單位。執行緒可以為作業系統核心排程的核心執行緒,如win32執行緒;由使用者程序自行排程的使用者執行緒,如linux平臺的posixthread;或者由核心與使用者程序,如windows7的執行緒,進行混合排程。

同一程序中的多條執行緒將共享該程序中的全部系統資源,如虛擬位址空間,檔案描述符和訊號處理等等。但同一程序中的多個執行緒有各自的呼叫棧(callstack),自己的暫存器環境(registercontext),自己的執行緒本地儲存(thread-localstorage)。

2樓:簡單點選

變數是公用的。私用的不知道。

同一程序下的執行緒可以共享什麼

3樓:小葉教育問答

同一程序下的執行緒可以共享的內容有以下幾點:

1、程序**段。

程序的**段又稱文字段,用來存放指令,執行**的一塊記憶體空間。此空間大小在**執行前就已經確定記憶體空間,一般屬於唯讀。某些架構的**也允許可寫在**段中,也有可能包含一些唯讀的常數變數,例如字串常量等。

2、程序的公有資料。

是指預設互動卡片對每個使用者渲染優先使用的資料。

3、程序開啟的檔案描述符。

核心會在每個程序空間中維護乙個檔案描述符表,所有打凳祥開的檔案都將通過此表中的檔案描述符來引用。

4、訊號的處理器。

也稱頻道處理器,是對訊號進行處理的裝置。

5、程序的當前目錄。

是環境變數。

的一部分,指的是你程序當前的工作目錄。

6、程序使用者id與程序組id。

對於普通使用者,seteuid和setuid函式效果相同。對於超級使用者,seteuid只改變有效使用者id,setuid改變所有3個使用者id。組id的情況與使用者id的情況類似。

程序和執行緒的區別:

程序是具有一定獨立功能的程式關於某個資料集合。

上的一次執行活動,程序是系統進行資源分配和排程的乙個獨立單位。

執行緒是程序的乙個實體,是cpu排程和分派的基本單位。

它是比程序更小的能獨立執行的基本單位。執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器。

一組暫存器。

和棧),但是它可與同屬乙個程序的其他的執行緒共享程序所擁有的全部資源。

乙個執行緒可以建立和撤銷另乙個執行緒;同乙個程序中的多個執行緒之間可以併發執行。

程序在執行過程中擁有獨立的記憶體單元,而該程序的多個執行緒共享記憶體。

從而極大地提高了程式的執行效率。每個獨立的執行緒有乙個程式執行的入口、順序執行序列和程式的數汪出口。但是執行緒不能夠獨立執行,必須依存在應用程式。

中,由應用程式提供多個執行緒執行控制。

從邏輯角薯粗仔度來看,多執行緒。

的意義在於乙個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看作多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。

為什麼要用多執行緒?多執行緒適用於哪種場合

4樓:

為什麼要用多執行緒?多執行緒適用於哪種場合。

使用多執行緒是為了提高程式執行察喚碼的效率。假如有乙個程式,要求使用者輸敗哪入多個算式,計算出結果,並分別列印到螢幕上。如果使用者一直沒有輸入,那麼無法計鏈笑算,更無法列印。

如果使用者輸入了,必須要全部輸入完,才能計算出結果,再列印到螢幕。

什麼是多執行緒?為什麼程式的多執行緒功能是必要的?

5樓:茉茉

為了解決負載均衡問題,充分利用cpu資源。為了提高cpu的使用率,採用多執行緒的方式去同時完成幾件事情而不互相干擾。為了處理大量的io操作時或處理的情況需要花費大量的時間等等,比如:

多執行緒的好處:

1.使用執行緒可以把正尺陸佔據時間長的程式中的任務放到後臺去處理。

2.使用者介面更加吸引人,這樣比如使用者點選了乙個按鈕去觸發某件事件的處理,可以彈出乙個進度條來顯示處理的進度。

3.程式的執行效率可能會提高。

4.在一些等待的任務實現上如使用者輸入,檔案讀取和網路收發資料等,執行緒就比較有用了。

多執行緒的缺點:

1.如果有大量的執行緒,會影響效能,因為作業系統需要在它們之間切換。

3.執行緒舉頃中止需要考慮對程式執行的影響。

4.通常塊模型資料是在多個執行緒間共享的,需要防止執行緒死鎖情況的發生。

6樓:生華月

多執行緒保證了不同的功能可以同時執行,加快了運算效率,可以分給多個工程師同時進行程式設計。

為什麼要用多執行緒

7樓:朗賽數碼

任何一項技術的出現都是為了解決現有問題。

之前的網際網絡大多是單機服務,體量小。而現在的更多是叢集服務,同一時刻有多個使用者同時訪問伺服器,那麼就會有很多執行緒併發訪問。

比如,常見的電商系統場景,同一時刻比如整點搶購時,會有海量使用者同時訪問伺服器。

如果不使用多執行緒處理,那基本涼涼……

所以現在公司裡開發基本都是多執行緒的。使用多執行緒確實提高了執行的效率。

但與此同時,也會伴隨著一些問題出現,讓人很頭痛。

比如,需要特別注意資料的增刪改情況,也就是執行緒安全問題。

想要保證執行緒安全也有很多方式,比如說:加鎖。

面試官現在也非常喜歡拿多執行緒來考你,比如:

產生死鎖的條件是什麼,怎麼解決死鎖?

樂觀鎖和悲觀鎖如何實現,有哪些實現方式?

非公平鎖和公平鎖在reentrantlock中的實現?

lock 和 synchronized 有什麼區別?

reentrantlock和synchronized如何選擇?

如今多執行緒在面試中已經是常客了,同時也是我們必備的知識點。

因此,我們需要理解多執行緒的原理和它可能會產生的問題以及如何解決問題,才能拿下高薪職位。

執行緒和程序的區別? 多執行緒有幾種實現方法, 都是什麼? 同步有幾種實現方法,都是什麼?

8樓:網友

兩種方式實現它 知道麼。

在多核CPU下,同一程序下的多個執行緒可以並行執行嗎

無影之子 一個程序的執行緒都是序列 使用者態多執行緒中 不同的程序可以並行 多核處理器中 在使用者態多執行緒中同一個程序下的多個執行緒不可以並行執行,不管多少核處理器,它的執行緒只能交替順序執行。你可以把一個使用者程序看做是一個人,執行緒是他要處理的事,cpu核心看做是辦事處視窗,一個人再nb也不可...

如何獲取程序裡某一線程當前執行的函式位址

suspendthread 是當前執行的指令位址要找函式起始位址的話,棧回溯一層,分析返回位址 ebp 4h 之上的一條call指令。以上只針對一般情況。dll dll getthreadstartinformation vista 怎麼查詢乙個程序id,程序執行緒id,程序控制代碼和程序執行緒控制...

為什麼有人說Python的多執行緒是雞肋

多執行緒還是有用的,多程序有多程序的好處,多執行緒有多執行緒的好處。多程序穩定,啟動時開銷大點,但如果你的執行時間遠大於多程序的時間,用多程序比較方便,如postgresql用多程序,chrome 多程序。如果你只是想做個定時器樣的簡單東西,對穩定性要求低些,如vb,c 類似的定時器,用多執行緒吧,...