cocoflow

并发流程控制
授权协议 LGPL
开发语言 C/C++
所属分类 程序开发、 并发/并行处理框架
软件类型 开源软件
地区 国产
投 递 者 吕鸿轩
操作系统 Windows
开源组织
适用人群 未知
 软件概览

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)
    )
)

 

 相关资料
  • 任何编程语言都包含的一个必要部分就是改变控制流程:if/else,for等。让我们讲述 Rust 语言中 的这部分内容。

  • 流程控制 和Java、PHP等语言不一样,sh的流程控制不可为空,如: <?php if (isset($_GET["q"])) { search(q); } else { //do nothing } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。 还要注意,sh里的if [ $foo -eq 0 ],这个方括号跟Java/PHP里if后面的

  • 决策结构要求程序员指定程序要评估或测试的一个或多个条件,以及在条件被确定为true要执行的语句,以及可选的,如果条件要执行的其他语句被认定是false 。 以下是大多数编程语言中的典型决策结构的一般性 - Swift 4提供以下类型的决策声明。 单击以下链接以检查其详细信息。 Sr.No 声明和说明 1 if 语句 if语句由一个布尔表达式后跟一个或多个语句组成。 2 if...else 语句 i

  • Swift提供了類似 C 語言的流程控制結構,包括可以多次執行任務的for和while迴圈,基於特定條件選擇執行不同程式碼分支的if和switch語句,還有控制流程程跳轉到其他程式碼的break和continue語句。 除了 C 語言裡面傳統的 for 條件遞增(for-condition-increment)迴圈,Swift 還增加了for-in迴圈,用來更簡單地遍歷陣列(array),字典(d

  • 算法 算法(Algorithm)是解决特定问题的步骤描述。问题的解决方案就是算法,例如,新学期开学,从家到学校的交通方式这个问题,就有很多解决方案。 一个算法,尤其是一个成熟的算法,应该具有以下五个特性: (1)确定性:算法的每一步都有确定的含义,不会出现二义性。 (2)可行性:算法的每一步都是可执行的,通过执行有限次操作来实现其功能。 (3)有穷性:一个算法必须在执行有穷步骤之后结束,且每一步都

  • 四个假值 在 Perl 中有 4 种假值: my $false = undef; $false = ""; $false = 0; $false = "0"; 最后一个为假值是因为 "0" 在数字上下文中将变成 0,根据第三条规则, 它是假值。 后缀控制 简单的 if 或 unless 块可能看起来像这样: if ($is_frobnitz) { print "