写点什么

Structured Concurrency for C

发布于: 1 小时前

今天给大家介绍一个开源组件 libdill,用 C 编写,实现了 Structured Concurrency。


什么是 Concurrency?什么又是 Structured Concurrency 呢?


Concurrency,翻译为“并发”。最直接的技术解释,就是一个线程处理任务 1 一会儿,然后处理任务 2,过一会儿又切换回来处理任务 1,这样在多个任务之间不断切换。从这些任务来看,每个任务都是在不断执行和处理的。这就叫并发。


有一个和并发非常容易混淆的术语,叫并行(Parallelism)。并行是指多个线程,每个线程执行一个子任务,这样整个任务看起来,每个子任务都是同时在向前推进的。


那么,什么叫结构化并发(Structured Concurrency)呢?


并发执行的任务,有个专用的术语,叫 Coroutine(协程)。当一个 Coroutine 创建了一个或多个子 Coroutine 时,当父 Coroutine 执行完毕后,需要保证其所有的子 Coroutine 都结束,有这样的生命周期管理保证,就叫做 Structured Concurrency。没有这样的保证,就不叫 Structured Concurrency。


下面这个图,就不是 Structured Concurrency:


下面这个图,是 Structured Concurrency:


由于子 Coroutine 还可以创建孙 Coroutine,形成复杂的多层次关系,因此,一个线程调度 Coroutine 过程中,应用 Structured Concurrency 策略时,会把 Coroutine 按照父子关系,形成一个树形结构来管理:


更详细的内容,请见 libdill 项目:

https://hub.fastgit.org/sustrik/libdill

http://libdill.org/structured-concurrency.html


另外还有一些使用 libdill 的开源项目:

https://hub.fastgit.org/jppunnett/libdill-tutorial

https://hub.fastgit.org/jppunnett/dboom

https://hub.fastgit.org/jeremycw/httpc


我的微信号是 实力程序员,欢迎大家关注我。

发布于: 1 小时前阅读数: 3
用户头像

实力程序员,用实力证明自己 2014.12.31 加入

70后码农一枚,超过20年一线开发和管理经验,酷爱编程,探求技术原本

评论

发布
暂无评论
Structured Concurrency for C