C 從兩個例子理解async await

2022-07-29 10:51:09 字數 1019 閱讀 8708

輸出的結果為:

可以看出執行的結果為:a——d——b——c——e. 

我們再看下乙個例子(注意,我們把**中d和e的位置交換)

結果:

結果為:a——b——c——e——d

async方式,使用async標記test為非同步方法,用await標記task表示方法內需要耗時的操作。主線程碰到await時會立即返回,繼續以非阻塞形式執行主線程下面的邏輯。當await耗時操作完成時,繼續執行test中下面的邏輯。

先執行test方法,輸出a,碰到await,進入之後立即返回執行主線程邏輯,這裡也就是輸出d,但是下面輸出e需要test方法返回的結果,所以這裡主線程被阻塞了,然後等待非同步耗時方法中的b輸出之後,繼續往下執行,輸出c,最後獲得了非同步方法的結果,再輸出e

先執行test方法,輸出a,碰到await,進入後立即執行返回主線程執行,但是下面一行**又需要test方法的返回值,所以這裡被阻塞住了,等待非同步方法中執行完輸出b,在繼續往下輸出c,返回結果,之後再往下輸出e,然後輸出d

也就是說:主線程一碰到await就返回去做自己的事情(直到await執行完成),等await完成之後再繼續執行await下面的方法(除非主線程下面需要使用到非同步方法的返回值,否則不會阻塞)

個人理解,歡迎指正!

走進非同步程式設計的世界 - 開始接觸 async/await

C 從兩個例子理解async await

輸出的結果為 可以看出執行的結果為 a d b c e.我們再看下乙個例子 注意,我們把 中d和e的位置交換 結果 結果為 a b c e d async方式,使用async標記test為非同步方法,用await標記task表示方法內需要耗時的操作。主線程碰到await時會立即返回,繼續以非阻塞形式...

從兩個例子分析C語言的宣告

從兩個例子分析c語言的宣告 在讀 c專家程式設計 一書的第三章時,書中談到c語言的宣告問題,c專家程式設計 這本書只有兩百多頁,卻花了一章的內容去闡述這個問題,足以看出這個問題的重要性,要想透徹理解c語言的宣告問題僅僅看書是遠遠不夠的,需要平時多實踐並大量閱讀別人寫的 下面借鑑 c專家程式設計 書中...

C 中Override的兩個例子

main.cc created on 2008 8 5 author administrator includeclass base class derived public base int main int arg,char args 結果 derived clone derived clone...