并发模型列表

27 concurrency

-edit-我想要一个大型列表,所以我可以参考这个想法.一些答案已经具有启发性

什么是并发模型?我听说过没有共享内存的消息传递.期货会立即返回一个对象(因此它不会阻塞)并允许您在以后需要阻止时取消引用原始函数返回值,如果结果尚未准备就绪.我听说过coroutines,软件事务内存和随机的其他内容.

我搜索了一个列表或维基,但找不到任何好的(许多没有列出我上面提到的3),许多结果给了我一个复杂的描述,解释它是如何工作的,而不是它的作用或如何使用.

什么是并发模型以及它们的作用的简单描述是什么?每个答案一个.

tux*_*yer 8

演员模特

我听说过没有共享内存的消息传递.

是关于Erlang风格的演员吗?

Scala在其Actors框架中使用了这个想法(因此,在Scala中它不是语言的一部分,只是一个库),它看起来很性感!

简而言之,Actors是根本没有共享数据的对象,但可以使用异步消息进行交互.Actor可以位于一个或不同的主机上,并使用有趣的错误处理策略(当错误发生时 - actor就会死掉).

您应该在Erlang和Scala文档中阅读更多内容,这是非常简单和渐进的方法!

第3章,第17章,第17章:

http://www.scala-lang.org/sites/default/files/linuxsoft_archives/docu/files/ScalaByExample.pdf https://en.wikipedia.org/wiki/Actor_model


小智 7

期货

未来是(并发)计算的未确定结果的占位符。一旦计算提供了结果,相关的未来就会通过用结果值全局替换它来消除。这种价值本身可能就是一个未来。

每当并发计算请求未来,即它尝试访问其值时,该计算通过阻塞自动同步未来,直到它变得确定或失败。

期货有四种:

  • 并发期货代表并发计算的结果,
  • 惰性期货代表仅在请求时执行的计算结果,
  • 承诺的期货代表承诺稍后通过明确方式交付的价值,
  • 失败的期货代表以异常终止的计算结果。


Céd*_*tte 7

COM线程(并发)模型

  • 单线程公寓
  • 多线程公寓
  • 混合模型开发

COM对象可以在进程的多个线程中使用.术语" 单线程公寓*t"(STA)和"*多线程公寓 "(MTA)用于创建概念框架,用于描述对象和线程之间的关系,对象之间的并发关系,以及方法调用被传递给一个对象,以及在线程之间传递接口指针的规则.组件及其客户在COM目前支持的以下两种公寓模型之间进行选择:

单线程单元模型(STA):进程中的一个或多个线程使用COM,COM对COM对象的调用进行同步.接口在线程之间进行封送.单线程单元模型的退化情况,其中给定进程中只有一个线程使用COM,称为单线程模型.以前的Microsoft信息和文档有时将STA模型简称为"公寓模型".多线程单元模型(MTA):一个或多个线程使用COM,并且与MTA关联的COM对象的调用由与MTA关联的所有线程直接进行,而不在调用者和对象之间插入任何系统代码.由于多个并发客户端可能或多或少同时调用对象(同时在多处理器系统上),因此对象必须自己同步其内部状态.接口不在线程之间进行编组.以前的Microsoft信息和文档有时将此模型称为"自由线程模型".STA模型和MTA模型都可以在同一个过程中使用.这有时被称为"混合模型"过程.STA模型和MTA模型都可以在同一个过程中使用.这有时被称为"混合模型"过程.STA模型和MTA模型都可以在同一个过程中使用.这有时被称为"混合模型"过程.


根据维基百科的其他模型

有几种并发计算模型,可用于理解和分析并发系统.这些模型包括:


小智 5

软件事务内存

在计算机科学中,软件事务内存 (STM) 是一种并发控制机制,类似于数据库事务,用于控制并发计算中对共享内存的访问。它是基于锁的同步的替代方案。此上下文中的事务是一段代码,它执行一系列对共享内存的读取和写入操作。这些读取和写入在逻辑上发生在一个瞬间;中间状态对其他(成功)事务不可见。为交易提供硬件支持的想法起源于 Tom Knight[1] 1986 年的论文和专利。这个想法被 Maurice Herlihy 和 J. Eliot B. Moss[2] 推广。1995 年 Nir ​​Shavit 和 Dan Touitou 将这个想法扩展到纯软件事务内存(STM)[3]。