await和async使用方法引⾔
为什么把这么多词汇放到同⼀个标题⾥⾯?
因为它们合起来可以实现⼀种技能,那就是:借助于由async, await构成的coroutine, ⽤同步的⽅式,编写异步的代码!异步的代码⽤同步的⽅式来写?有什么⽤啊?请看下⾯分解——
异步的代码是什么?
阻塞调⽤,程序会等着这些事情完成然后再继续执⾏接下来的步骤。⽽异步代码长什么样⼦呢?以JavaScipt 为例⼦。
在没有asyn,await的久远年代,代码是怎么写的呢?它们写得像下⾯这个样⼦——
所以异步的代码指的是仍按照⼀定的序列执⾏,但是中间穿插了其他的⽅框,即,做事情仍按照顺序,但是并不是时间上相连的顺序,⽽是逻辑上的顺序。它们很适⽤于IO密集的应⽤,⽐如Nginx,NodeJS。
所以,Coroutine就是函数,只不过是可以suspend和resume的函数,也就是你可以暂停这个函数的执⾏(实际上就是在suspend的地⽅直接返回到caller了),去做其他事情,然后在恰当的时候恢复到你离开的位置继续开始运⾏。
如果对上图还不是很理解,那么我们代⼊线程后看看是怎么实现的。
Coroutine in C++ 20
这⼀章才是我写这篇⽂章的原因——讲讲C++ 20的coroutine。
C#,JavaScript早早就有了coroutine(async, await,etc.)⽽C++居然直到2020年才有,截⽌此刻,可以在C++ compiler support

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。