多執行緒操作
參考鏈結
新建 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...