如何评价c++的协程库libgo?

GitHub - yyzybb537/libgo: Go-style concurrency in C++11 下面是官方文档的介绍libgo有以下特…
关注者
674
被浏览
242,081

21 个回答

去年在金山技术分享的时候,我和这位作者一起参加过。当时我是分享C++17的东西,他介绍他的libgo。

我没有使用过libgo,因为我没有这个需求,但是我认真听过他的设计理念以及是如何解决的。其中包括了协程上下文切换(如使用Linux ucontext, Boost.context, Windows Fiber),以及让我印象最深的是面对高协程数的栈内存问题,是使用static stack, segmentated stack, shared stack 抑或是 copy stack? 这在C++中有什么限制?比如你说copy stack很好,这在C++中可以做到吗?所以这一套思路走下来,我认为是值得学习的。

而与此同时,他问过我C++17的协程,在当时只有VC++做过很粗略的原型验证一样的东西出来,我说和他的还没有办法比。对于这个,我也认为若标准出来了,这套还是交给编译器去搞吧,无论如何这都是一种别扭的方式,如以前的Modern C++ Design,当C++11出来以后,很多模版的奇技淫巧都可以更好更容易的处理了。

正确的姿势在这里

llvm.org/docs/Coroutine