美文网首页
什么是 结构化并发 ?

什么是 结构化并发 ?

作者: 郑海鹏 | 来源:发表于2020-04-12 18:16 被阅读0次

关键字:结构化并发、线程、Kotlin、协程

多线程的并发是全局的,而结构化并发中,每个并发都有自己作用域。

1. 线程的并发不是结构化的

可以想想这几个问题在 Java 中要怎么解决:

  1. 结束一个线程时,怎么同时结束这个线程中创建的子线程?
  2. 当某个子线程在执行时需要结束兄弟线程要做怎么做?
  3. 如何等待所有子线程都执行完了再结束父线程?

这些问题都可以通过共享标记位、CountDownLatch 等方式实现。但这两个例子让我们意识到,线程间没有级联关系;所有线程执行的上下文都是整个进程,多个线程的并发是相对整个进程的,而不是相对某一个父线程。

这就是线程的「非结构化」。

2. 业务的并发是结构化的

通常,每个并发操作都是在处理一个任务单元,这个任务单元可能属于某个父任务单元,同时它也可能有子任务单元。而每个任务单元都有自己的生命周期,子任务的生命周期理应继了父任务的生命周期。

这就是业务的「结构化」。

3. 结构化的并发应该是什么样?

在结构化的并发中,每个并发操作都有自己的作用域,并且:
在父作用域内新建作用域都属于它的子作用域;
父作用域和子作用域具有级联关系;
父作用域的生命周期持续到所有子作用域执行完;
当主动结束父作用域时,会级联结束它的各个子作用域。

例如 Kotlin 的协程就是 结构化的并发,它有 「协程作用域(CoroutineScope)」 的角色。全局的 GlobalScope 是一个作用域,每个协程自身也是一个作用域。新建的协程对象和父协程保持着级联关系。

可以看出 协程的并发 和 业务的并发 更相似,它们都具有结构上的关联。

相关文章

  • 什么是 结构化并发 ?

    关键字:结构化并发、线程、Kotlin、协程 多线程的并发是全局的,而结构化并发中,每个并发都有自己作用域。 1....

  • WWDC21-Swift中的结构化并发

    一、引言 在Swift5.5引入了受结构化编程思维影响的结构化并发的并发编程方式。以下是一个使用传统的回调通知来实...

  • 一学就会的协程使用——基础篇(七)初遇结构化

    1. 引言 前文提及了join函数,那么进一步的便是协程中非常强大的结构化并发设计了。 结构化并发(structu...

  • Sendable 和 @Sendable 闭包 —— 代码实例详

    前言 Sendable 和 @Sendable 是 Swift 5.5 中的并发修改的一部分,解决了结构化的并发结...

  • WWDC21-Swift并发

    swift语言中的并发介绍 wwdc21-认识Swift中异步与等待 wwdc21-结构化并发

  • [转]并发和并行有什么区别

    做并发编程之前,必须首先理解什么是并发,什么是并行,什么是并发编程,什么是并行编程。 并发(concurrency...

  • 什么是并发

    什么是并发 并发指的是一个程序可以有多个执行路径,一个程序本来是自上而下执行的,在只有一个cpu的情况下,并发意味...

  • 如何深入思考

    结构化思维 这本书,主要从三个方面讲结构化思维: 1、什么是结构化思维? 2、为什么要用结构化思维方式? 3、如何...

  • 结构化搜索

    总结 本章介绍es的结构化搜索,通过demo演示es的结构化搜索 结构化搜索 什么是结构化搜索结构化搜索就是对结构...

  • 结构化思维

    一、什么是“结构化思维”?为什么要学结构化思维? 1,我们用一个例子来让你理解什么是“结构化思维”。 问:怎么讲2...

网友评论

      本文标题:什么是 结构化并发 ?

      本文链接:https://www.haomeiwen.com/subject/gcybmhtx.html