C Task阻塞方式和延續操作

2021-10-24 06:55:27 字數 1839 閱讀 3620

task啟動的幾種方式

var task =

newtask((

)=>);

task.

start()

;//工廠

task.factory.

startnew((

)=>);

task.

run(()

=>);

//同步的方式

task =

newtask((

)=>);

//阻塞執行

task.

runsynchronously()

;

task阻塞方式和延續操作

下面開啟2個執行緒

task task =

newtask((

)=>);

task.

start()

;task task1 =

newtask((

)=>);

task1.

start()

;

waitall

//需要等待所有執行緒執行完畢,才會繼續執行主線程

task.

waitall

(task, task1 )

; console.

writeline

("主線程"

+ thread.currentthread.managedthreadid)

; console.

readline()

;

waitany

//只要有乙個task執行完畢,就算完成,繼續走主線程

task.

waitany

(task, task1)

; console.

writeline

("主線程"

+ thread.currentthread.managedthreadid)

; console.

readline()

;

continuewith 不阻塞主線程,等兩個執行緒執行完畢之後,執行延續任務

//whenall 將task和task1執行完畢之後,在執行延續任務continuewith

task.

whenall

(task, task1)

.continuewith

(t =

>);

//whenall 執行完乙個執行緒之後就開始執行延續任務

task.

whenany

(task, task1)

.continuewith

(t =

>);

console.

writeline

("主線程"

+ thread.currentthread.managedthreadid)

; console.

readline()

;

task工廠中的延續操作

task.factory.

continuewhenall

(new

task[2

],(t)=

>);

task.factory.

continuewhenany

(new

task[2

],(t)=

>

);

Task的阻塞方式和任務延續

回顧之前使用thread多個子執行緒執行時阻塞的方法 static void method2 thread thread2 new thread thread1.start thread2.start thread1.join 讓呼叫執行緒阻塞 thread2.join 如果有很多的thread,是...

C task和timer實現定時操作

c 中,定時器,或者叫作間隔器,每隔一段時間執行乙個操作。1.timer本身就是多執行緒 c 中為不同場合下使用定時器,提供了不同的timer類,在asp.net中一般使用system.timers.timer。這個類也很簡單,在微軟官方文件可以檢視如何使用。c 的timer,本身就封裝了執行緒的操...

linux下串列埠的阻塞和非阻塞操作

有兩個可以進行控制串列埠阻塞性 同時控制read和write 乙個是在開啟串列埠的時候,open函式是否帶o ndelay 第二個是可以在開啟串列埠之後通過fcntl 函式進行控制。阻塞的定義 對於read,block指當串列埠輸入緩衝區沒有資料的時候,read函式將會阻塞在這裡,移植到串列埠輸入緩...