C 高定位高效率程式中 執行緒與執行緒池比較

2021-09-05 21:12:53 字數 1412 閱讀 5392

應用程式可以擁有多個執行緒,當程式需要大量時間來處理部分業務或流程時,就可以通過執行緒來操作,如果應用程式沒有用到執行緒,那將會出現很麻煩的事情,例如:介面上有個datagridview需要填充資料,如果有form_load事件中實現資料繫結,如果在主線程中操作,那麼你執行開啟窗體的時候就會出現程式假死的現象.這不是客戶所接受的,所以在程式開發中,執行緒的應用是不可缺少的一部分.

我們用多執行緒來開發程式,目的就是減少處理器單元的閒置時間,增加處理器單元的操作能力.但這並不能說明在程式中可以泛用多執行緒,應用不當,會降低系統的效能.例如:如果完成乙個作業需要的時間為n,在多執行緒的情況下,建立執行緒需要的時間為n0,執行緒中處理的作業需要的時間為n1,執行緒銷毀需要的時間是n3,還有一些其它的時間這裡就不算了,這裡可以看出如果作業流程簡單的,占用資源和時間不長的則不需要利用乙個執行緒來處理,如果乙個作業需要不停的建立執行緒則需要利用到執行緒池,從而提高程式的效能.

需要多執行緒作業,需要新增system.threading命名空間,下面細說乙個thread的操作:

通過thread一次使用乙個執行緒,來建立和刪除執行緒.

建立執行緒: 

thread th = new thread(new threadstart(method));

開始執行緒:

th.start();

銷毀執行緒:

th.abort();

執行緒名稱:

th.name="a";

執行緒休眠:

th.sleep();

執行緒掛起:

th.suspend();

執行緒恢復:

th.resume();

說到thread還有乙個方法就是設定後台執行緒

isbackground屬性設為true,該執行緒即為後台執行緒。

後台執行緒跟前臺執行緒只有乙個區別,那就是後台執行緒不妨礙程式的終止。一旦乙個程序所有的前台執行緒都終止後,

clr將通過呼叫任意乙個存活中的後台程序的abort()方法來徹底終止程序。注意:後台執行緒不能直接操作所在程序

之外的資料引用。

通過threadpool來建立執行緒,如果你的程式需要頻繁的建立執行緒的時候你就可以用到這個類,用實現建立執行緒,提高程

序的效能.通過threadpool.queueuserworkitem(new waitcallback(method), 1)來建立執行緒池下面請看一下面的**:

private void button2_click(object sender, eventargs e)

private void a1(object i)

}private void a2(object i)

}private delegate void updaterichtxt(string itxt);

private void updatert(string itxt)

到這裡你應該清楚,多執行緒的正確應用.

單核CPU使用多執行緒能否提高效率

什麼是執行緒上下文切換 什麼是cpu時間片 一,如果是cpu密集型作業 不能 假設一段耗時總共為10s的 不涉及io操作 使用單執行緒執行,只需要10s的時間,當使用多執行緒執行時,就會涉及到執行緒的上下文切換,這時耗時肯定會超過10s的,所以這種情況下不能提高效率。二,如果是io密集型的作業 能 ...

我對於多執行緒是否提高效率的理解

多執行緒是否會提高效率?實際上多執行緒提高效率指的是提高cpu的利用率。並行指的是三個人吃三個蘋果,併發指的是乙個人吃三個蘋果。多執行緒屬於併發,併發指的是在多個執行緒上來回切換,在乙個執行緒上做一點,再在另乙個執行緒上做一點。多個執行緒之間來回切換,創造結束執行緒也會產生時間的消耗。那麼單執行緒不...

第05課 理解執行緒實現,達成高效率與低複雜度

目前,多執行緒模型非常常見,從終端應用到大型伺服器程式都會大量使用。在本文中,我們就來深入 下 linux 執行緒的內部細節,讓讀者對執行緒的把控更加胸有成竹,得心應手,主要包括以下幾方面內容 乙個程序可以包含多個執行緒。多個執行緒可以併發執行,從而提高系統整體吞吐量,提供更好使用者體驗。乙個程序中...