c task新增順序 C 的執行順序

2021-10-13 05:54:46 字數 1329 閱讀 4901

為了搞清.net的執行順序我們做如下準備

1,做3個任務,分別往3個文字檔案寫入100萬行時間戳,每個任務根據計算大概需要400+毫秒。

datetime dt1;

private void dowork1()

for (int i = 0; i < 1000000; ++i)

writer.writeline((datetime.now-dt1).milliseconds.tostring());

writer.close();

private void dowork2()

for (int i = 0; i < 1000000; ++i)

writer.writeline((datetime.now - dt1).milliseconds.tostring());

writer.close();

private void dowork3()

for (int i = 0; i < 1000000; ++i)

writer.writeline((datetime.now - dt1).milliseconds.tostring());

writer.close();

2,採用如下方法呼叫者三個任務:以執行緒的方式呼叫任務1,然後呼叫任務2,最後呼叫任務3。

dt1 = datetime.now;

task t1 = new task(dowork1);

t1.start();

dowork2();

dowork3();

3,最終得出第乙個結果:

任務1和任務2是同步進行的,所以時間戳是一致的。證明採用執行緒時,主線程和副執行緒是同步進行的

任務3一直等待,直至任務2完成才開始。任務3的時間戳從任務2的時間戳繼續。證明同乙個執行緒裡,是任務是順序執行的。

4,那麼非同步的執行順序是如何的呢?

我們用下面的**當模擬一項工作,耗時5s

private task worker1()

return task.run(()=>

system.threading.thread.sleep(5000);

然後在winform裡面把工作狀態顯示出來。很明顯執行到這裡的時候label1變成"worker starting to work",五秒後變成"worker done"

label1.text = "worker starting to work";

await worker1();

label1.text = "worker done";

5,最終得出第二個結果,採用async/await非同步的時候是順序執行的,好處是可以跟同步任務一樣理解,又不至於引起ui卡死

Lua順序 執行順序

nginx下lua處理階段與使用範圍 例如lua shared dict共享記憶體的申請,只有當nginx重起後,共享記憶體資料才清空,這常用於統計。set by lua 設定乙個變數,常用與計算乙個邏輯,然後返回結果 該階段不能執行output api control api subrequest...

c程式的執行順序

在c語言的課堂裡老師都告訴我們程式的執行入口函式是main函式,但是實際上程式在執行之初最先開始執行的卻不是main,至少還有一些程式設計師可控的函式可以在main函式之前執行,也可以有一些函式在main結束之後執行。attribute constructor 標記的函式實在main執行之前執行的,...

C 繼承的執行順序

自己對多型中建構函式 函式過載執行順序和過程一直有些不理解,經過測試,對其中的執行順序有了一定的了解,希望對初學者有些幫助。eg1 public class a public virtual void fun public class b a public void fun class progra...