Ctrl OS开发之libaco协程库
前言(废话)
在linux环境搭建Ctrl OS的协程库是在网上找了几个协程库,现在发现两个协程库。一个是腾讯的libco,另一个是开源大佬的libaco。
简单对比两个库之后,libco的功能比较完善,同时相对比较复杂,目前只需要使用协程的基本接口。无需太多的功能,故使用libaco库。
libaco简介
下面引自libaco的readme :
下面是这个项目的简要介绍:
- 除了一个生产级别的C协程库实现,还包含了一个详细的文档描述了如何实现一个 最快且正确 的协程库以及其严格的数学证明;
- 核心实现不超过 700 行代码,但包含了一个协程库应该有的全部功能;
- 在AWS c5d.large机器上的性能测试结果指出,一次协程间上下文切换仅耗时 10 ns (独立执行栈);
libaco提供的一个高性能的协程库,用简短的代码实现了一个完整的协程。
核心API
/*初始化协程使用环境*/
void aco_thread_init(aco_cofuncp_t last_word_co_fp);
/*创建一个协程任务栈*/
aco_share_stack_t* aco_share_stack_new(size_t sz);
/*创建一个协程*/
aco_t* aco_create(aco_t* main_co,aco_share_stack_t* share_stack,
size_t save_stack_sz, aco_cofuncp_t co_fp, void* arg);
/*启动一个协程*/
void aco_resume(aco_t* co

本文介绍了libaco协程库的使用方法,并通过一个简单的生产者消费者模型示例展示了其特性。libaco是一个轻量级的C语言协程库,核心实现简洁,提供了高效的上下文切换能力。
最低0.47元/天 解锁文章
1707

被折叠的 条评论
为什么被折叠?



