在C 中的總結 Task物件的呼叫方法。

2021-09-14 07:28:37 字數 1915 閱讀 3087

waitall() 等待任務全部完成,才繼續執行

waitany() 等待任一 task 完成,才繼續執行

whenall() 非同步等待集合內的 task 都完成,不會占用主線程的時間。

whenany() 至少等待了乙個任務的完成,不會占用主線程的時間。

當方法中有要修改的task物件的值時,需要等待async方法執行完,

並且返回值時,才能進行資料的修改。若沒有返回值,則會等待async

方法執行完畢後,得到返回值,才會進行資料的修改。

這裡借用裡的**

class program

: ");

console.writeline("123123");

console.writeline($"result: ");

// 涉及到非同步返回值,則會停止進行,並等待結果。

//waitall() 等待任務全部完成,才繼續執行

//waitany() 等待任一 task 完成,才繼續執行

//whenall() 非同步等待集合內的 task 都完成,不會占用主線程的時間。

//whenany() 至少等待了乙個任務的完成。

console.read();

}/// /// 獲取乙個隨機數

///

///

///

private static async taskgetrandomasync()

);time++;

var t2 = task.run(() =>

);//非同步等待集合內的 task 都完成,才進行下一步操作

可以看到,第乙個執行的輸出是main方法中的

console.writeline("t.

name

of(t

.isc

ompl

eted

):t.

isco

mple

ted"

);第二

個執行:

cons

ole.

writ

elin

e("123123")

;下乙個

執行的是

:con

sole

.wri

teli

ne("t.: "); 第二個執行: console.writeline("123123"); 下乙個執行的是: console.writeline(

"t.nam

eof(

t.is

comp

lete

d):t

.isc

ompl

eted

");第

二個執行

:con

sole

.wri

teli

ne("

1231

23")

;下乙個

執行的是

:con

sole

.wri

teli

ne(" t1.: ");

。。。。。

最後執行的是:

console.writeline($「result: 」);輸出結果。

這裡可以判斷出,沒有結果之前,對於資料的增刪改查都是不進行的,

只有async的方法返回值時,才會進行下一步。

C 中的可呼叫物件

之前對c 中的多種可呼叫物件的使用總感覺很模糊,今天重新翻看了一下,總結成文如下。c 中有如下幾種可呼叫物件 函式 函式指標 lambda表示式 bind物件 函式物件。其中lambda表示式和bind物件是c 11標準中提出的 bind機制並不是新標準中首次提出,而是對舊版本中bind1st和bi...

在C 中呼叫C 寫的DLL

這裡兩個問題,一是如何將c 編譯成dll,二是在c 和c 中呼叫這個dll 1,寫c 的dll,參照以下link,它說的是c 中的dll呼叫,所以肯定成功 2,寫乙個c 呼叫上面寫的dll 2.1將以上的dll拷貝到debug release目錄,然後寫c 程式如下 using system usi...

在c 中呼叫c 的類庫

c 開發平台 vs2017 1 類庫中共封裝了連個函式,首先需要將函式載入進來 class cdll dllimport hdll.dll entrypoint sub callingconvention callingconvention.stdcall private static extern...