cocoflow并发流程控制

联合创作 · 2023-09-29 13:46

Concurrency Control Flow 并发流程控制


一个基于协程和libuv的C++框架,仅通过 startawaitall_ofany_of 控制流程。



  • 基于 协程(Coroutine) & libuv 的C++开发框架

  • 使用 start | await | all_of | any_of 四个原语控制流程

  • 同步的用户接口 & 异步的运行过程

  • 阻塞只是hold住运行状态然后切换

  • 任何操作都不会真正阻塞线程

  • 支持 Linux & Windows

  • 提供 sleep sync udp tcp 等预设任务


任务



  • 并发流程中最小的控制单元

  • 一段逻辑上可能阻塞的过程视为任务


原语


start —— 异步地执行一个<任务>,该过程不阻塞当前任务的执行,目标任务启动后立即继续
await —— 同步地执行一个<任务>,该过程会阻塞当前任务的执行,等待目标任务执行完成后继续
all_of —— 将多个<任务>组合为一个新的任务,全部任务执行完成后新的任务视为执行完成


any_of —— 将多个<任务>组合为一个新的任务,任一任务执行完成后新的任务视为执行完成,同时会取消掉其他未执行完成的任务


示例:你需要等待两个udp的recv事件,并且需要设置一个超时时间,则你可以用使用:



await(
any_of(
all_of(
udp0.recv,
udp1.recv
),
sleep(x ms)
)
)

 

浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报