今天给大家介绍一个开源组件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过程中,应用Struc

本文介绍了开源组件libdill,它是一个用C编写的库,实现了Structured Concurrency。文章阐述了Concurrency与Structured Concurrency的区别,并通过示例说明了Structured Concurrency的生命周期管理特点。同时,提到了libdill在Coroutine管理中的树形结构,以及一些使用libdill的开源项目链接。
最低0.47元/天 解锁文章
1097

被折叠的 条评论
为什么被折叠?



