1
0
peilaus alkaen https://github.com/tearshark/librf.git synced 2024-10-01 15:57:07 +08:00
基于C++ Coroutines提案 ‘Stackless Resumable Functions’编写的协程库
Go to file
2020-04-18 13:57:22 +08:00
benchmark 兼容gcc-10 2020-04-18 11:46:29 +08:00
doxygen/html 完善文档 2020-03-31 17:26:07 +08:00
librf 兼容gcc 10 2020-04-18 13:57:22 +08:00
modern_cb@ed0cdca0de 添加modern callback子模块 2020-04-08 09:40:29 +08:00
references 参考资料目录重命名 2020-03-29 14:36:06 +08:00
tutorial 兼容gcc 10 2020-04-18 13:57:22 +08:00
vs_proj 兼容gcc 10 2020-04-18 13:17:02 +08:00
xcode_proj/librf.xcodeproj 兼容Xcode 2020-03-26 17:26:39 +08:00
.gitignore 忽略私有代码 2020-03-28 00:21:22 +08:00
.gitmodules 引用modern callback项目 2020-04-08 09:35:10 +08:00
build_vs2019.bat 使用cmake编译。 2020-03-28 00:10:00 +08:00
CMakeLists.txt gcc 10下编译通过 2020-04-18 13:47:46 +08:00
config.h.in 删除是否多线程调度的选择宏,现在都是多线程调度。 2020-03-29 23:10:38 +08:00
Doxyfile 继续完善文档 2020-03-30 23:01:07 +08:00
LICENSE create repository 2017-09-24 14:01:30 +08:00
README.md 更新说明 2020-03-31 15:38:27 +08:00
test_librf.cpp gcc 10下编译通过 2020-04-18 13:47:46 +08:00

librf 2.9.7

librf - 协程库

  • librf是一个基于C++ Coroutines提案 Stackless Resumable Functions编写的非对称stackless协程库。

支持以下平台和编译器:

Windows: 使用VS2017/VS2019/clang 9编译
Android: 使用NDK 20.1 自带的clang编译
Mac: 使用XCode 11.2.1 自带的apple-clang编译

librf有以下特点

  • 1.基于C++20提案'Stackless Resumable Functions'编写的非对称stackless协程库可以以同步的方式编写简单的代码同时获得异步的性能
  • 2.理论上支持海量协程, 创建 10,000,000 个协程只需使用 2.2G 物理内存(使用clang编译)
  • 3.拥有极小的协程调度在I7 8100 3.6GHz的CPU上1000 个协程的平均切换开销是 27 纳秒(使用clang编译)
  • 4.提供协程锁(mutex), 定时器, channel, event等特性, 帮助用户更加容易地编写程序
  • 5.可以很好的跟asio, libuv等库结合能跟现有的callback范式的异步/延迟代码很好的结合
  • 6.目前已处于较为完善状态已经小规模在生产项目中使用。不出意外2.8以上版本就是C++20 Coroutines对应的版本

如果你发现了任何bug、有好的建议、或使用上有不明之处可以提交到issue也可以直接联系作者:

email: tearshark@163.net
QQ交流群: 296561497

2020-03-31 更新:

使用Doxygen自动生成文档并完善文档内容。
支持cmake。(目前仅VS2019测试通过)。

2020-03-26 更新:

兼容xcode 11.2.1。

2020-03-18 更新:

更新event/mutex/when_all/when_any实现。至此2.x版本完整恢复1.x版本的所有功能。
版本号提升至 2.8.0。
3.0之前只打算做修复BUG相关的工作。
3.0的目标是根据executor的设计重写scheduler代码。

2020-03-08 更新:

更新channel实现效率提高了近三倍。
channel的新的实现方法为event/mutex指明了新的修改方向。

2020-02-16 更新:

更新调度器算法深入应用Coroutines的特性以期获得更高调度性能。
不再支持C++14。
  • 注一doc目录下有作者搜集的一些关于C++协程的资料
  • 注二tutorial目录下有针对每个特性的范例代码让用户可以循序渐进的了解librf库的特性