异步呼叫中有三个关键字,异步,等待,未来,需要一起使用异步和等待。在飞镖中,异步操作可以通过异步和等待。异步意味着打开异步操作或将来的结果。如果没有返回值,则默认为null的默认返回值为默认值。
示例1在代码示例中,执行到_testring()方法,并将同步执行该方法。当执行等待时,将停止异步的内部执行,从而继续执行外部代码。因此,等待的操作不会影响后续代码的执行(“测试功能已结束”将在_testring中打印()。当等待返回时,它将继续从等待的位置继续(因此我打印了“我是测试字符串=== 2”的结果,然后返回未来的结果。== 1”))))))))))。
示例2在代码示例中,_testasynckeyword()本身具有等待操作。当执行要等待时,它将停止_testAsynckeyword()async。在_testring()的结果之后,如果返回结果,请继续执行。
_testString()也是内部的等待操作。当执行等待时,它将停止_testString()async的内部执行。等待300毫秒。
_testasynckeyword()继续执行打印字符串1并结束
示例3通过上面的三个示例,我们可以看到等待异步之间的差异和连接。
异步和等待的操作是“假异步”,为什么?如果您想获得这个问题的答案,首先,我们需要了解异步和等待的原理以及公司的概念,因为异步和等待的本质上是企业coroutinesa chantax candy.council.council,也称为coroutine,也称为coroutine,也称为coroutine,也是如此是一个小于线的单位。如果涉及单位大小,则可以基本理解为过程 - > thread-> coroutine。
在理解Coroutine之前,我们必须首先了解并行和平行的概念
并发的实现是通过非烧阻操作+事件通知完成的,事件通知也称为“中断”。操作过程分为两种类型,一种是CPU的操作,并且中断告诉IO操作操作完成后完成。另一个是IO启动中断并告诉CPU操作。
线程:本质上,这也取决于计划的中断。还有一个称为“阻止中断”的线程。在执行IO操作时,是要阻止线程。执行完成后,将继续执行。操作。出现多核CPU,单个线程无法很好地使用多核CPU的优势,因此引入线程池的概念以通过线程池管理大量线程。当我们需要执行许多多个线程。任务同时,我们将使用多线程并发执行。
DART单线线程运行模型:输入单个功能NA NA进入操作机构,主要通过消息周期机制来实现任务调度和处理。
当多线程操作系统正在等待IO时,它将阻止当前线程并切换到其他线程。这样,在等待io的过程中,可以继续执行其他线程。当系统线程较少时,没有问题,但是当线程数量较大时,就会出现问题。系统线程将占据很多内存空间,另一个是线程将占用大量系统时间的线程。Coroutine在线程上方运行。执行一个Coroutine时,您可以选择积极放弃以让另一个Coroutine在当前线程上运行。坐标的数量不会增加线程的数量,但是它会根据时间在时间的基础上运行多个coroutines-到 - 时间重复使用,并在用户模式下完成了Coroutine的切换。价格很小。Council分为无线旋风和有线的Coroutines。
异步/等待是假异步的原因,因为他在执行过程中没有打开新线程并没有执行并发。如果代码执行异步,则意味着输入coroutine并将执行异步的代码块同时。ASYNC的代码块本质上等同于一个函数,并且具有自己的上下文。执行等待时,这意味着需要等待任务,并且CPU将安排执行其他IO,即后一个代码或其他代码或其他代码Coroutine代码。一段时间后,CPU将询问一次。查看是否已经处理了某个Coroutine的任务,并且可以继续执行返回结果。如果您可以继续执行,即等待徽标的位置。
由于新线程未打开,但只有IO中断会更改CPU调度,因此异步操作(例如网络请求)可以使用异步和等待,但是如果执行大量时间 - 耗时的同步操作,则应进行用于开发新线程以执行。