C 多執行緒程式設計基礎

2021-06-25 19:10:02 字數 1835 閱讀 6343

使用執行緒有幾個原因。假設從應用程式中進行網路呼叫需要一定的時間。使用者不希望分割使用者界,並且讓使用者一直等待直到從伺服器返回乙個響應為止。使用者可以同時執行其他一些操作,或者甚至取消傳送給伺服器的請求。這些都可以使用執行緒來實現。

對於所有需要等待的操作,例如,因為檔案、資料庫或網路訪問都需要一定的時間,此時就可以啟動乙個新執行緒,同時完成其他任務。即使是處理密集型的任務,執行緒也是有幫助的。乙個程序的多個執行緒可以同時執行在不同的cpu上,或多核cpu的不同核心上。

還必須注意執行多個執行緒時的一些問題。它們可以同時執行,但如果執行緒訪問相同的資料,就很容易出問題。必須實現同步機制。

使用thead類可以建立和控制線程。下面的**是建立和啟動乙個新執行緒的簡單例子。在建立了thread物件後,就可以用start()方法啟動執行緒:

using system;

using system.threading;

static void threadmain()

}}

struct 型別是一種值型別,通常用來封裝小型相關變數組,下面的**是利用struct結構來傳遞引數

using system;

using system.threading;

; thread t1 = new thread(threadwithpara);

t1.start(d);

console.writeline("這是主線程");

}static void threadwithpara(object o)

",d.message);

}public struct data

}}

新建立乙個類,通過向類傳遞引數的方法,然後呼叫執行緒執行這個方法也可以傳遞引數。

using system;

using system.threading;

}}

using system;

using system.text;

public void threadmain()

", data);}}

}

建立執行緒需要時間。如果有不同的小任務要完成,就可以事先建立許多執行緒,· 在應完成這些任務時發出請求。這個執行緒數最好在需要更多的執行緒時增加,在需要釋放資源時減少。

不需要自己建立這樣乙個列表。該列表由threadpool類託管。這個類會在需要時增減池中線程的執行緒數,直到最大的執行緒數。池中的最大執行緒數是可配置的。在雙核cpu中,預設設定為1023個工作執行緒和1000個i/o執行緒。也可以指定在建立執行緒池時應立即啟動的最小執行緒數,以及執行緒池中可用的最大執行緒數。如果有更多的作業要處理,執行緒池中線程的個數也到了極限,最新的作業就要排隊,且必須等待執行緒完成其任務。

在預設情況下,用thread類建立的執行緒是前台執行緒。執行緒池中的執行緒總是後台執行緒。

無引數使用執行緒池執行執行緒

using system;

using system.threading;

static void jobthread(object o)

}}

將物件傳遞給在佇列中等待由執行緒池執行的任務

using system;

using system.threading;

static void jobthread(object o)

",ti.s);}}

}

using system;

}}

C 學習 多執行緒程式設計 多執行緒基礎

c 內建了對多執行緒程式設計的支援功能,所以相對於其他語言在多執行緒方面的問題,c 這裡就已經最小化或者不復存在。在.net framework 4.0中,c 中新增了兩個與多執行緒應用程式相關的重要功能 tpl 任務執行並行庫 和plinq 並行linq 兩者都提供對並行程式設計的支援,都可以利用...

C語言多執行緒程式設計基礎

我們進行多執行緒程式設計,可以有多種選擇,可以使用windowsapi,如果你在使用gtk,也可以使用gtk實現了的執行緒庫,如果你想讓你的程式有更多的移植性你最好是選擇posix中的pthread函式庫,我的程式是在linux下寫的,所以我使用了pthread庫 是不是很傷心,我知道有不少人期待的...

多執行緒程式設計基礎

一直以來,自己都不會多執行緒的程式設計。今天決定好好的補補!一 多執行緒的基本概念 二 多執行緒中的重要函式 1 handle createthread lpsecurity attributes lpthreadattributes,dword dwstacksize,lpthread start...