C 帶參多執行緒操作

2021-10-10 02:25:50 字數 2824 閱讀 5788

多執行緒操作

參考鏈結

新建 thread 物件會新建託管執行緒。 thread 類包含需要使用 threadstart 委託或 parameterizedthreadstart 委託的建構函式;委託包裝在呼叫 start 方法時由新執行緒呼叫的方法。 多次呼叫 start 會導致 threadstateexception 丟擲。

執行緒一旦啟動,就無需保留對 thread 物件的引用。 執行緒可以繼續執行到執行緒過程結束。

下面的**示例新建兩個執行緒,以對另乙個物件呼叫例項和靜態方法:

using system;

using system.threading;

public

class

serverclass

public

static

void

staticmethod()

}public

class

******

}// the example displays the output like the following:

// the main() thread calls this after starting the new instancecaller thread.

// the main() thread calls this after starting the new staticcaller thread.

// serverclass.staticmethod is running on another thread.

// serverclass.instancemethod is running on another thread.

// the instance method called by the worker thread has ended.

// the static method called by the worker thread has ended.

將執行緒過程和資料封裝到幫助程式類中,並使用 threadstart 委託執行執行緒過程。 下面的示例演示這一方法:

using system;

using system.threading;

// the threadwithstate class contains the information needed for

// a task, and the method that executes the task.

//public

class

threadwithstate

// the thread procedure performs the task, such as formatting

// and printing a document.

public

void

threadproc()

}// entry point for the example.

//public

class

example.",

42);// create a thread to execute the task, and then

// start the thread.

thread t =

newthread

(new

threadstart

(tws.threadproc));

t.start()

; console.

writeline

("main thread does some work, then waits.");

t.join()

; console.

writeline

("independent task has completed; main thread ends.");

}}// the example displays the following output:

// main thread does some work, then waits.

// this report displays the number 42.

// independent task has completed; main thread ends.

下面的例程演示的是所有子執行緒併發執行,並且所有子執行緒都執行完任務後,主線程才能接著執行後面的任務。其中class decode建立並啟動多個子執行緒,子執行緒要執行的任務由class writedatatolist定義

public

class

decode

foreach

(var thread in threads)

//等待所有子執行緒結束後再執行主線程

foreach

(var thread in threads)

}

public

class

writedatatolist

public

void

threadproc()

}

下面的例子演示的是每次只允許乙個子執行緒執行任務,其他執行緒等待。這樣做的目的是為了方便多執行緒的除錯:

class

decode

//每次只允許乙個子執行緒參與執行

foreach

(var thread in threads)

}

c 多執行緒 傳參

向執行緒傳遞引數 1 必要的標頭檔案 include 多線成標頭檔案 include c的stdlib標頭檔案 include 最好不要用 using namespace std 巨集定義 define numthread 5 定義乙個函式,列印hello world,這個函式有傳入值 void p...

多執行緒傳參

1.要避免的陷阱 1 用detach 時,如果主線程先結束,變數就會被 所以用detach 的話,不推薦用引用,同時絕對不能用指標。include include using namespace std void myprint const int i,char pmybuf intmain 2 在...

C 多執行緒操作

在.net和c 中編寫乙個多執行緒應用程式將非常得容易。即使對於那些從沒有用c 編寫過多執行緒應用程式的初學者,只需遵循以下這些簡單的步驟就可以實現目的。定義命名空間 在.net中,多執行緒功能是在system.threading命名空間中定義的。因此,在使用任何執行緒類之前,必須定義 system...