在书#include <stdio.h>
int main()
{
int arr[] = {4, 2, 3};
int *p[3];
int i = 0;
p[0] = arr;
for (int i = 0; i < 3; i ++)
printf("%d\n",*(p[0] + i) );
return 0;
}
中,协同程序和光纤之间的区别解释如下:
协程和光纤提供的执行单元甚至比线程更轻(前者是编程语言构造时的名称,后者是系统构造时)。
我有一些Coroutines(语言结构)的例子,但无法找到Fibers的例子。
有人能为我提供一些光纤(系统结构)的例子吗?
答案 0 :(得分:15)
您可以查看boost.coroutine2和boost.fiber(C ++库) - 两者都使用callcc()/continuation中相同的上下文切换机制(boost.context)。
简而言之 - 协同程序和光纤之间的区别在于,光纤之间的上下文切换由调度程序管理(选择下一根光纤......)。协同程序没有调度程序的概念。
可以在N4024: Distinguishing coroutines and fibers中阅读协程和光纤之间差异的更详细说明。