协程和线程有什么区别?


回答 1:

协程和线程有什么区别?

不是很多。

主要区别在于协程是协作的。 线程是抢占式的。

两者都有某种形式的上下文跟踪单元。 两者都有一种从一个上下文更改为另一个上下文的方法。

除了协同例程使用的内容外,线程还使用基于时钟/中断的事件来更改上下文,其中协同例程使用函数调用(可以“屈服于另一个上下文”),并且可以恢复该协同例程。之后该函数调用。


回答 2:

我只听说过RCA1802 CPU中提到了协程。 它有一个4位寄存器,告诉它16个16位寄存器中的哪个是当前程序计数器。 因此它可以通过将PC切换到另一个寄存器来“调用”子例程(或协程)。

我不知道线程的定义是否包含被时钟滴答或任何其他中断抢占的要求。