【问题标题】:What's *Deterministic concurrency*?什么是*确定性并发*?
【发布时间】:2011-02-24 06:27:01
【问题描述】:

听说有3种并发。

  1. 确定性并发
  2. 消息传递并发
  3. 共享状态并发

我知道 #2(=actor 模型)和 #3(=通用线程),但不知道 #1。那是什么?

【问题讨论】:

    标签: concurrency terminology


    【解决方案1】:

    确定性并发是一种并发编程模型,使用该模型编写的程序具有以下属性:对于给定的一组输入,程序的输出值对于任何执行计划都是相同的。这意味着程序的输出仅取决于程序的输入。

    有一些方法可以确保此属性。其中一种方法是所谓的单赋值编程,其中变量不必初始化,但最多可以赋值一次。读取未初始化的变量会停止,直到它被赋值(可能由其他线程)。 Mozart 编程语言支持这些。

    另一种方法是使用所有权分析来确定哪些线程“拥有”不同的引用,并确保没有 2 个线程在同一“时间”写入引用,因此不存在数据竞争。

    【讨论】:

    • 看起来肯定和协程没有关系:)
    • 不,如果您假设并发意味着多个计算并行发生,我不会这么说。但是您可以在确定性并发模型中使用协程,例如单赋值编程。
    【解决方案2】:

    我以前没听过这个词,但我想到了coroutines。它们不提供“真正的”并发,即在任何特定时刻只有一个例程正在执行,但它们是并发的,即一组交互的协程都可以取得进展,而无需相互等待完成。

    【讨论】:

      猜你喜欢
      • 2011-04-03
      • 2013-07-04
      • 2012-01-24
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 2019-08-01
      相关资源
      最近更新 更多