今天给大家介绍一个开源组件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: