v0.2.0
使用Coke v0.2.0
时建议依赖Workflow v0.11.3
版本。
新增组件
- 异步信号量
TimedSemaphore
- 异步锁
TimedMutex
- 异步共享锁
SharedTimedMutex
- 有向无环图任务
DagBuilder
、DagGraph
等,该组件很大程度上参考了google/marl,尤其是令我坚定了放弃在边上传递消息的信心
重构组件
- 使用可取消定时器机制重构了
Future
新增功能
- 增加
create_future(Task<T> &&task)
函数,启动一个协程任务task
并返回coke::Future
,后者可用于等待前者结束,类似于线程模式中的std::async
- 增加
QpsPool::get_if(unsigned count, const NanoSec &nsec)
,仅当可在nsec
时间内获取到count
个Qps许可时才产生等待任务,以解决某些场景下并发数远高于Qps时,一些协程等待过久的问题 - 休眠任务增加了只可被取消的类型,以
InfiniteDuration
参数标记,原则上来说应当比带时间的可取消休眠任务效率更高,但实际效率却更低,日后再做分析
Full Changelog: v0.1.0...v0.2.0