c++下的协程库libgo初体验
背景
在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次。