协程和异步有什么区别

协程和异步有什么区别

协程是与例程相对而言的。熟悉C/C++语言的人都知道,一个例程也就是一个函数。当我们调用一个函数时,执行流程进入函数当函数执行完成后,执行流程返回给上层函数或例程。期间,每个函数执行共享一个线程栈函数返回后栈顶的内容自动回收。这就是例程的特点,也是现代操作系统都支持这种例程方式。

异步IO程序中,有很大一块代码是处理异步回调的,也就是数据读取或写入由系统执行,当任务完成后,系统会执行用户的回调。如果只是很少使用这种回调,那么程序并不会因为异步而复杂多少,但要是程序中异步回调大量存在,那么此时我们会发现,原本简单的程序可能因为回调而变得支离破碎,原本一个简单的循环

协程和异步有什么区别

协程只是异步的一种实现方式,异步也可以用回调,定时器,语言特性等方式,不一定要协程

协程一定会存在额外内存分配,用来维持协程的中间状态值,但是定时调用就可以不用