C 多執行緒學習筆記七

2021-10-18 10:16:31 字數 1647 閱讀 7734

task<

int> task = task.factory.

startnew((

)=>);

task.

wait()

;console.

writeline

(task.result)

;

task<

int> task = task.factory.

startnew((

)=>);

var task2 = task.

continuewith

<

int>

((t)

=>);

console.

writeline

(task2.result)

;

task<

int> task1 = task.factory.

startnew((

)=>);

task<

int> task2 = task.factory.

startnew((

)=>);

var tasks =

newtask

<

int>[2

];var task = task.

whenall

<

int>

(tasks)

;int

result = task.result;

1.什麼時候丟擲異常:

wait操作,tresult操作

2.何時會有多個異常在aggregateexception中以及如何去獲取所有的異常

aggregateexception 是乙個集合,因為task中可能會丟擲多個異常,所以用一種新的型別把這些異常都追加到乙個集合中。對應以下這段**:

var task = task.factory.

startnew((

)=>

, taskcreationoptions.attachedtoparent)

;var childtask2 = task.factory.

startnew((

)=>

, taskcreationoptions.attachedtoparent);}

);trycatch

(aggregateexception ex)

,type="

, item.innerexception.message, item.

gettype()

.name));

}}

3.handle方法

try

catch

(aggregateexception ex)

return

false;}

);}}

catch

(aggregateexception ex)

當前的handle就是來遍歷異常陣列的,如果有乙個異常資訊是符合要求的,便認為是已經處理的,返回true,如果覺得異常還需要上拋,請返回false。

C 多執行緒基礎學習筆記(七)

一 std async和std future的用法 std async是乙個函式模板,std future是乙個類模板 std async std launch async,mythread 如果std async 的第乙個引數改成std lauch deferred,那麼執行緒不會被馬上執行,而是...

多執行緒學習(七)

問題 1.賣票系統 如果每個執行緒執行的 相同,可以使用同乙個runnable物件,這個runnable物件中有那個共享資料 解決public class multithreadsharedatastudy class ticketsystem implements runnable 2.設計4個執...

C 多執行緒學習筆記

一 基本概念 bi d.z9k l b 0 程序 當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。q7 j ka ik z b0 執行緒 執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 ...