Coroutine,Coroutine2和Fiber有什么区别?

时间:2017-06-13 12:11:54

标签: c++ multithreading c++11 boost boost-asio

在Boost中有3个具有手动低延迟上下文切换的细线程:

Coroutine1,Coroutine2和Boost中的Fiber之间有什么区别?

1 个答案:

答案 0 :(得分:31)

boost.coroutine 是非C ++ 11,因此需要使用boost.context中的私有API(因为它已被弃用)。

boost.coroutine2 boost.fiber 需要C ++ 11并使用 callcc()/ continuation (实现上下文切换,调用 - 来自boost.context的 boost.coroutine boost.coroutine2 实现协同程序,而 boost.fiber 提供光纤(== lightweigt,coroperative userland-threads, green-threads,...),其API类似于std :: thread。

协程和光纤之间的区别在N4024: Distinguishing coroutines and fibers中描述 - 简而言之:光纤由内部调度程序切换,而协同程序使用无内部调度程序。 / p>