了解协程

时间:2019-04-19 02:58:40

标签: multithreading coroutine

从维基百科  Comparison with threads段指出:

  

...这意味着协程提供并发性,但不提供并行性...

我知道协程比线程轻,不涉及上下文切换,没有关键部分,因此也不需要互斥体。令我感到困惑的是,它的工作方式似乎无法扩展。根据Wikipedia的说法,协程提供并发,它们协同工作。具有协程的程序仍然按顺序执行指令,这与单核计算机上的线程完全相同,但是多核计算机又如何呢?协程在哪些线程上并行运行,而协程与单核计算机上的运行原理相同。

我的问题是协程在多核计算机上的性能如何比线程更好?

1 个答案:

答案 0 :(得分:1)

  

...什么是多核计算机?...

协程是并发模型(其中两个或多个有状态活动可以同时进行),但不是并行模型(程序可以使用该模型)比单个常规CPU内核所能提供的更多硬件资源。

线程可以彼此独立运行,并且如果您的硬件支持它(即,如果您的计算机具有多个内核),则两个或多个线程可以同时执行其独立的活动。

但是,协程从定义上讲是相互依存的。一个协程仅在被另一个协程调用时才运行,并且调用方被挂起,直到当前协程将其回调为止。一组协程中只有一个协程可以在任何给定的时间点实际运行。