【发布时间】:2011-02-24 06:27:01
【问题描述】:
听说有3种并发。
- 确定性并发
- 消息传递并发
- 共享状态并发
我知道 #2(=actor 模型)和 #3(=通用线程),但不知道 #1。那是什么?
【问题讨论】:
听说有3种并发。
我知道 #2(=actor 模型)和 #3(=通用线程),但不知道 #1。那是什么?
【问题讨论】:
确定性并发是一种并发编程模型,使用该模型编写的程序具有以下属性:对于给定的一组输入,程序的输出值对于任何执行计划都是相同的。这意味着程序的输出仅取决于程序的输入。
有一些方法可以确保此属性。其中一种方法是所谓的单赋值编程,其中变量不必初始化,但最多可以赋值一次。读取未初始化的变量会停止,直到它被赋值(可能由其他线程)。 Mozart 编程语言支持这些。
另一种方法是使用所有权分析来确定哪些线程“拥有”不同的引用,并确保没有 2 个线程在同一“时间”写入引用,因此不存在数据竞争。
【讨论】:
我以前没听过这个词,但我想到了coroutines。它们不提供“真正的”并发,即在任何特定时刻只有一个例程正在执行,但它们是并发的,即一组交互的协程都可以取得进展,而无需相互等待完成。
【讨论】: