c++下的协程库libgo初体验

  |   0 评论   |   0 浏览

背景

在Java下,可以使用异步编程来提高性能。但是异步编程容易出错。听说协程可以实现同样的效果,但是使用方式和同步编程类似。这里学习一下c++下的协程库。

初体验

选型

C++下的协程库有:

  • 魅族:libgo
  • 微信:libco
  • 开源:libaco
  • boost coroutine2

根据参考二的建议,C++项目需要用到协程,倾向于: libgo > libaco > libco

所以本文从libgo来学起。

魅族libgo

支持平台:Linux & MacOSX & Windows (来自于github介绍)

安装

wget "https://github.com/yyzybb537/libgo/archive/v2.6.zip" -O libgo-v2.6.zip

cd libgo-2.6
mkdir build
cd build

cmake ..
make

sudo make uninstall
sudo make install

第一个例子

使用curl进行多线程下载,找到libgo自带的例子文件 sample9_curl.cpp,编译:

g++ -std=c++11 sample9_curl.cpp -lboost_thread -lcurl -llibgo -o sample9_curl

测试:

$./sample9_curl http://www.baidu.com 10
ok:279, error:1
ok:329, error:0

可见使用10个并发来访问百度,每秒成功访问279次,失败1次。

参考