我听说有3种并发。
我知道#2(=演员模型)和#3(=通用线程),但不知道#1。那是什么?
答案 0 :(得分:7)
确定性并发是一种并发编程模型,因此在此模型中编写的程序具有以下属性:对于给定的输入集,程序的输出值对于任何执行计划都是相同的。这意味着程序的输出仅取决于程序的输入。
有办法确保这个属性。其中一种方法是所谓的单指派编程,其中变量不必初始化,但最多可以分配一次。读取未初始化的变量会停止,直到它被赋值(可能由其他某个线程)。莫扎特编程语言支持这些。
另一种方法是使用所有权分析来确定哪些线程'拥有'不同的引用,并确保没有2个线程在同一'时间'写入引用,因此没有数据争用。
答案 1 :(得分:0)
我以前没有听过这个词,但coroutines浮现在脑海中。它们并不提供“真正的”并发性,因为在任何特定时刻只执行一个例程,但它们是并发的,即一组交互协同程序都可以在不必等待彼此的情况下取得进展。光洁度。