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

時間 2022-01-02 00:54:56

1樓:柯石郜李李陳

多執行緒(英語:multithreading),是指從軟體或者硬體上實現多個執行緒併發執行的技術。具有多執行緒能力的計算機因有硬體支援而能夠在同一時間執行多於乙個執行緒,進而提公升整體處理效能。

具有這種能力的系統包括對稱多處理機、多核心處理器以及晶元級多處理(chip-level multithreading)或同時多執行緒(simultaneous multithreading)處理器。[1] 在乙個程式中,這些獨立執行的程式片段叫作「執行緒」(thread),利用它程式設計的概念就叫作「多執行緒處理(multithreading)」。具有多執行緒能力的計算機因有硬體支援而能夠在同一時間執行多於乙個執行緒(台灣譯作「執行緒」),進而提公升整體處理效能。

優點:1·使用執行緒可以把佔據時間長的程式中的任務放到後台去處理

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

3·程式的執行速度可能加快

4·在一些等待的任務實現上如使用者輸入、檔案讀寫和網路收發資料等,執行緒就比較有用了。在這種情況下可以釋放一些珍貴的資源如記憶體占用等等。

5.多執行緒技術在ios軟體開發中也有舉足輕重的位置。

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

2·更多的執行緒需要更多的記憶體空間。

3·執行緒可能會給程式帶來更多「bug」,因此要小心使用。

4·執行緒的中止需要考慮其對程式執行的影響。

2樓:夜禮服假面

資源利用率更好

想象一下,乙個應用程式需要從本地檔案系統中讀取和處理檔案的情景。比方說,從磁碟讀取乙個檔案需要5秒,處理乙個檔案需要2秒。處理兩個檔案則需要:

5秒讀取檔案a

2秒處理檔案a

5秒讀取檔案b

2秒處理檔案b

---------------------

總共需要14秒

從磁碟中讀取檔案的時候,大部分的cpu時間用於等待磁碟去讀取資料。在這段時間裡,cpu非常的空閒。它可以做一些別的事情。

通過改變操作的順序,就能夠更好的使用cpu資源。看下面的順序:

5秒讀取檔案a

5秒讀取檔案b + 2秒處理檔案a

2秒處理檔案b

---------------------

總共需要12秒

cpu等待第乙個檔案被讀取完。然後開始讀取第二個檔案。當第二檔案在被讀取的時候,cpu會去處理第乙個檔案。記住,在等待磁碟讀取檔案的時候,cpu大部分時間是空閒的。

總的說來,cpu能夠在等待io的時候做一些其他的事情。這個不一定就是磁碟io。它也可以是網路的io,或者使用者輸入。通常情況下,網路和磁碟的io比cpu和記憶體的io慢的多。

程式設計更簡單

在單執行緒應用程式中,如果你想編寫程式手動處理上面所提到的讀取和處理的順序,你必須記錄每個檔案讀取和處理的狀態。相反,你可以啟動兩個執行緒,每

個執行緒處理乙個檔案的讀取和操作。執行緒會在等待磁碟讀取檔案的過程中被阻塞。在等待的時候,其他的執行緒能夠使用cpu去處理已經讀取完的檔案。其結果就

是,磁碟總是在繁忙地讀取不同的檔案到記憶體中。這會帶來磁碟和cpu利用率的提公升。而且每個執行緒只需要記錄乙個檔案,因此這種方式也很容易程式設計實現。

程式響應更快

將乙個單執行緒應用程式變成多執行緒應用程式的另乙個常見的目的是實現乙個響應更快的應用程式。設想乙個伺服器應用,它在某乙個埠監聽進來的請求。當乙個請求到來時,它去處理這個請求,然後再返回去監聽。

伺服器的流程如下所述:

while(server is active)

如果乙個請求需要占用大量的時間來處理,在這段時間內新的客戶端就無法傳送請求給服務端。只有伺服器在監聽的時候,請求才能被接收。另一種設計是,

監聽執行緒把請求傳遞給工作者執行緒(worker

thread),然後立刻返回去監聽。而工作者執行緒則能夠處理這個請求並傳送乙個回覆給客戶端。這種設計如下所述:

while(server is active)

這種方式,服務端執行緒迅速地返回去監聽。因此,更多的客戶端能夠傳送請求給服務端。這個服務也變得響應更快。

桌面應用也是同樣如此。如果你點選乙個按鈕開始執行乙個耗時的任務,這個執行緒既要執行任務又要更新視窗和按鈕,那麼在任務執行的過程中,這個應用程

序看起來好像沒有反應一樣。相反,任務可以傳遞給工作者執行緒(word

thread)。當工作者執行緒在繁忙地處理任務的時候,視窗執行緒可以自由地響應其他使用者的請求。當工作者執行緒完成任務的時候,它傳送訊號給視窗執行緒。視窗

執行緒便可以更新應用程式視窗,並顯示任務的結果。對使用者而言,這種具有工作者執行緒設計的程式顯得響應速度更快。

乙個主頁 裡面有30個模組 30個模組分別讀取資料庫的資料

這個頁面 如果不用多執行緒,你開打以後,會看到白頁,10秒以後 所有模組一瞬間看到

而多執行緒,開啟頁面的第一秒 頁面就開啟了 這時候 頁面上只有3個模組 然後 每過1秒 漫漫的 都顯示出來

使用者體驗好

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

3樓:啥啥啥寫的這是啥啊

執行更快。。如果乙個程式可以同時讓幾個執行緒同時執行,那麼也就是速度快了幾倍。玩網頁遊戲的時候,vip可以享受同時兩個建築公升級,而非vip就只能乙個接個公升級,你說那個快?

和這個一樣。

什麼是多執行緒應用程式

c語言 epoll和多執行緒有什麼關係

1 epoll處理併發事件,多執行緒處理併發業務。2 poll是linux核心為處理大批量檔案描述符而作了改進的poll,是linux下多路復用io介面select poll的增強版本,它能顯著提高程式在大量併發連線中只有少量活躍的情況下的系統cpu利用率。另一點原因就是獲取事件的時候,它無須遍歷整...

執行緒和協程有什麼區別呢?程序,執行緒和協程的區別

協同程式 coroutine 與多執行緒情況下的執行緒比較類似 有自己的堆疊,自己的區域性變數,有自己的指令指標陸態消 ip,instruction pointer 閉蠢,但與其它協同程式共享全域性變數等很多資訊。協程 協同程式 同一時間只能執行某個協程。開闢多個協程開銷不大。協程適合對某任務進行分...

程式安裝到c盤有什麼好的

沒有什麼好不好的,只要你的c盤空間夠大,就算全部裝到c盤也不會對系統的執行效率有多大影響,只不過如果你把系統以外的軟體全都裝到其他盤的話比較便於管理,至少在心理上有整潔感。還有,如果你裝了一鍵還原精靈,還原c盤的時候其他軟體不受影響,所以還是建議你只給c盤有限的10g以下的空間容量,就算這樣你都用不...

數控衝的程式與數控銑的程式有什麼不同的地方?哪個能簡單一些?謝謝

呵呵,不要著急的,我學的專業是數控裝置的應用與維護,在學校裡面咱們學的東西都是為以後進入學習打下乙個基礎,我們學校的硬體設施還可以,有幾十台數控工具機供我們平時學習用的,每個星期都會實際操作至少兩次,但是真正企業裡面的工具機與我們現在使用的是不同的,而且工件會更加複雜,公差要求會更高的。所以咱們現在...

一次小程式直播帶來的經驗,小程式直播有什麼優勢嗎?

一次直播,可以帶來很多的訂單和銷量。近些年直播走進大家的視野,成為大眾熟悉的娛樂模式。我們可以看到直播平台的流量一直攀公升,這也為商家直播帶貨帶來了機會。我們大家可能都比較熟悉李佳琦,作為口紅一哥,他創造了帶貨奇蹟。薇婭也同樣創造了神奇。直播成為風口,小程式直播因此誕生,直播間兩個半小時就引流14....