在维基百科中,与螺纹的比较一段写道:
..。这意味着协同机制提供并发性,但不提供并行性。
我知道协同线比线程轻,不涉及上下文切换,不需要关键部分,所以也不需要互斥。令我困惑的是,它的工作方式似乎并没有扩大。根据维基百科的说法,协同机制提供了并发性,它们可以协同工作。一个具有协同机制的程序仍然按顺序执行指令,这与单核机器上的线程完全相同,但是多核机器呢?在这些线程上并行运行,而协同工作与在单个核心机器上的工作相同。
我的问题是,在多核机器上,协同机制如何比线程表现得更好?
发布于 2019-04-19 13:26:35
关于多核机器的...what?
Coroutines是一种并发模型(在这种模式中,两个或多个有状态活动可以同时进行),但不是并行模型(在并行模型中,程序能够使用比单个常规CPU核心所能提供的更多的硬件资源)。
线程可以彼此独立运行,如果您的硬件支持它(也就是说,如果您的机器有多个核心),那么两个或多个线程可以在同一时刻执行它们的独立活动。
但根据定义,合作是相互依存的。一个协同线只有在被另一个协同线调用时才运行,并且调用者被挂起,直到当前协同线调用回它。一组协同线中只有一个协同线能够在任何给定的时间内实际运行。
https://stackoverflow.com/questions/55756034
复制相似问题