libgo 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
libgo 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
libgo 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 C/C++
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织 魅族
地区 国产
投 递 者 Li_Mr
适用人群 未知
收录时间 2016-01-25

软件简介

libgo 是一个使用 C++ 编写的协作式调度的stackful协程库, 同时也是一个强大的并行编程库。

设计之初是为高并发分布式Linux服务端程序开发提供底层框架支持,可以让链接进程序的同步的第三方库变为异步库,不影响逻辑的前提下提升其性能

目前支持两个平台:

  • Linux (GCC 4.8+)

  • Windows (Win7、Win8、Win10 x86 and x64 使用VS2013/2015编译)

使用libgo编写并行程序,即可以像golang一样开发迅速且逻辑简洁,又有C++原生的性能优势。

  • 1.提供golang一般功能强大协程,基于corontine编写代码,可以以同步的方式编写简单的代码,同时获得异步的性能

  • 2.支持海量协程, 创建100万个协程只需使用2GB内存

  • 3.允许用户自由控制协程调度点,随时随地变更调度线程数;

  • 4.支持多线程调度协程,极易编写并行代码,高效的并行调度算法,可以有效利用多个CPU核心

  • 5.可以让链接进程序的同步的第三方库变为异步调用,大大提升其性能。再也不用担心某些DB官方不提供异步driver了,比如hiredis、mysqlclient这种客户端驱动可以直接使用,并且可以得到不输于异步driver的性能。

  • 6.动态链接和静态链接全都支持,便于使用C++11的用户静态链接生成可执行文件并部署至低版本的linux系统上。

  • 7.提供协程锁(co_mutex), 定时器, channel等特性, 帮助用户更加容易地编写程序.

  • 8.网络性能强劲,在Linux系统上超越ASIO异步模型;尤其在处理小包和多线程并行方面非常强大

  • 在源码的samples目录下有很多示例代码,内含详细的使用说明,让用户可以很轻易地学会使用libgo。

#include <stdio.h>
#include <libgo/coroutine.h>

co_main(int argc, char **argv)
{
    go []{
        printf("1\n");
        co_yield;
        printf("2\n");
    };

    go []{
        printf("3\n");
        co_yield;
        printf("4\n");
    };

    return 0;
}
展开阅读全文

代码

评论

点击加入讨论🔥(8)
发表了资讯
2016/10/20 00:00

Libgo v2.6 发布,Stackful 协程库

v2.6 是libgo针对HTTP优化的版本,用于类似于HTTP这种半双工协议的场景时,性能相比上一个版本提升100% 主要变更: ##HOOK * 增加安全signal的功能, 可以让signal在Run中触发, 编译时需使用参数 -DWITH_SAFE_SIGNAL=ON. 以此解决linux对signal里面调用的函数必须可重入的要求. * Hook gethostbyname系列函数和gethostbyaddr系列函数,DNS解析阻塞也可以不阻塞线程了,具体实现依赖libcares. 编译时需使用参数 -DWITH_CARES=ON....

1
8
发表了资讯
2016/06/03 00:00

Libgo v2.4-stable 发布,Stackful 协程库

Libgo v2.4-stable 发布了。 Libgo : https://github.com/yyzybb537/libgo v2.4-stable是libgo的第一个稳定版,经过了线上环境的大规模考验,也修复了很多线上测试过程中发现的bug。 目前有200多台linux服务器、600多个进程基于此版本7×24小时地运行着。 # 主要变更 ## 协程调度 1.删除ENABLE_SHARED_STACK选项 2.多线程调度算法采用work-steal, 可以通过设置关闭 3.优化切换速度, 每秒切换次数达到千万级 4.增加go_dispatch, ...

1
6
发表了资讯
2016/04/18 00:00

libgo v2.3 发布,Stackful 协程库

libgo v2.3 发布,更新内容: 重构IO层的Hook代码,通过跟踪socket状态的方式优化掉额外的系统调用,IO性能再次提升30%左右 支持共享监听端口的多进程服务器的使用方式 增加一个接口set_connect_timeout, 可以设置connect的超时时间. 弥补原生syscall不能设置connect超时时间的缺憾 下载地址: Source code (zip) Source code (tar.gz) libgo 是一个使用 C++ 编写的协作式调度的stackful协程库,同时也是一个强大的并行编程库。...

3
27
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
8 评论
200 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部