Ctrl OS开发之libaco协程库

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值