C 正確理解 async 與 await

2021-08-14 19:13:55 字數 974 閱讀 6567

msdn文件裡提到的不會建立新執行緒是指async函式本身不會直接在新執行緒中執行。

在 mvc 模式下:

非同步action執行到await之前都是再loop執行緒,loop執行緒池的執行緒數是有限的,在iis執行緒池的高階設定(queue length)裡可以設定,一旦執行到await之後,就會開啟另乙個執行緒去執行await的任務,同時,loop執行緒回池去接收其他請求,當await執行完了又會從loop執行緒池拿乙個執行緒處理接下來的任務。這樣做的好處是不回阻塞loop執行緒,提高併發(並不是提高單個action的執行效率)。await的任務也最好是高io,低計算的任務(比如檔案讀寫,網路請求,資料庫讀寫)。這樣比較划算

public actionresult getlist()

public async taskgetlistasync()

#region getcountry方法getlist && getlistasync

public string getcountry()

public async taskgetcountryasync()

#endregion

#region getstate方法用於getlist && getlistasync

public string getstate()

public async taskgetstateasync()

#endregion

#region  getcity方法getlist && getlistasync

public string getcity()

public async taskgetcityasync()

#endregion

**:參考:

此寫法 會導致 程式 假死,無限等待

參考:

public actionresult index()

public async task***() );

}

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...

正確理解 clear both

原文 要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳...

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...