【发布时间】:2017-08-16 10:09:52
【问题描述】:
在Linux System Programming, 2nd Edition一书中,协程和纤程的区别解释如下:
协程和纤程提供了一个比线程更轻的执行单元(当它们是编程语言构造时,前者是它们的名称,而当它们是系统构造时是后者)。
我有一些 Coroutines(语言结构)的例子,但找不到 Fibers 的例子。
谁能给我一些 Fiber(系统构造)的例子?
【问题讨论】:
在Linux System Programming, 2nd Edition一书中,协程和纤程的区别解释如下:
协程和纤程提供了一个比线程更轻的执行单元(当它们是编程语言构造时,前者是它们的名称,而当它们是系统构造时是后者)。
我有一些 Coroutines(语言结构)的例子,但找不到 Fibers 的例子。
谁能给我一些 Fiber(系统构造)的例子?
【问题讨论】:
您可以查看 boost.coroutine2 和 boost.fiber(C++ 库) - 两者都使用来自 boost.context 的相同上下文切换机制 (callcc()/continuation)。
简而言之 - 协程和纤程之间的区别在于,纤程之间的上下文切换由调度程序管理(选择下一个纤程......)。协程没有调度器的概念。
关于协程和纤程区别的更详细解释可以阅读N4024: Distinguishing coroutines and fibers。
【讨论】: