加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

“消息传递/共享状态”困境(并发和分发)是否采取了“Holywar”的

发布时间:2020-12-15 08:33:30 所属栏目:Java 来源:网络整理
导读:关于哪种模式更好的讨论的情况我不太了解,所以我想问一个非常直接的问题:看起来两个相反的观点真的出现了争议吗?例如.像基于原型/类的OOP或动态与静态类型 (虽然这些都不是很合适的例子,我只是不知道如何更清楚地表达我的问题) 解决方法 From Wikipedia 在
关于哪种模式更好的讨论的情况我不太了解,所以我想问一个非常直接的问题:看起来两个相反的观点真的出现了争议吗?例如.像基于原型/类的OOP或动态与静态类型

(虽然这些都不是很合适的例子,我只是不知道如何更清楚地表达我的问题)

解决方法

From Wikipedia

在一些并发计算系统中,并发组件之间的通信对程序员是隐藏的(例如,通过使用期货),而在其他组件中,它必须被明确地处理.显式通信可以分为两类:

共享内存通信
并发组件通过改变共享内存位置的内容进行通信(以Java和C#为例).这种并发编程风格通常需要应用某种形式的锁定(例如,互斥,信号量或监视器)来协调线程之间的协调.

消息传递通信
并发组件通过交换消息进行通信(例如Erlang和occam).消息的交换可以异步执行,或者可以使用发送方阻塞的会合样式,直到接收到消息.异步消息传递可能是可靠的或不可靠的(有时称为“发送和祈祷”).消息传递并发往往比共享内存并发更容易推理,并且通常被认为是更健壮的并发编程形式.有许多用于理解和分析消息传递系统的数学理论,包括Actor模型和各种过程演算.消息传递可以在对称多处理器上有效地实现,有或没有共享的相干存储器.

共享内存和消息传递并发具有不同的性能特征;通常(尽管不总是),消息传递系统中的每进程内存开销和任务切换开销较低,但消息传递本身的开销大于过程调用的开销.这些差异往往被其他表现因素所淹没.上面的部分说异步通信可能不可靠,但可以通过使用事务排队系统(JMS over MQSeries,OpenMQ等等)来避免这种情况.

我的两分钱值得.这两种范式没有竞争,它们的目的不同,我们正在讨论异步与同步通信.对于可伸缩性,通常最好尽可能地进行异步,因为只要有额外的带宽,您就可以始终遵循另一个进程或处理结果.将算法分成异步工作并不总是可行的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读