gpt4 book ai didi

Ruby 编程风格 : Asynchronous message passing

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:48 24 4
gpt4 key购买 nike

希望这不是太主观......

我对基于异步消息的编程的想法很陌生——换句话说,编写一组自给自足的“小程序”,它们同时运行并且只响应接收到的消息。

我知道这种风格必然会占用大量 CPU 周期。


除此之外,还有什么可以支持反对异步消息传递方式的?

最佳答案

这种编程主要用于解决某一类问题;主要是那些需要处理很多连接而只做少量工作的。电信交换机、证券交易所和即时消息服务器自然会浮现在脑海中,但那些聪明的人可以将这种模式用于很多不同的事情。

事实证明,这种方法的一大优势是分布性:与其在一台机器上运行所有这些进程(如果进程多于处理器通常对你没有多大好处),你可以轻松地均匀分布它们跨多台机器,并让它们通过网络进行通信。这允许极大的可扩展性,例如电信交换机或电子证券交易所,其中需要快速有效地处理大量的小信息。

另一方面,这种方法不适用于不分解成小块的程序,并且当单个用户使用应用程序并且事件循环很小时根本没有帮助。一个很好的例子就是您拥有的几乎所有桌面应用程序。您不会从运行大量进程的文字处理器中获得任何好处,因为 99.9% 的时间都花在处理最后一次按键事件上,并且在您下一次按键之前完成,但是您确实在开销上花费了时间管理进程和消息队列。

除此之外,异步应用程序还有另一个大问题:共享数据。可以看看经典的多线程问题:假设您的应用程序是处理 ATM 交易的银行服务器。如果没有锁定账户余额,如果丈夫和妻子同时存入薪水,他们可能会与对方的操作发生冲突并变空!通过使用异步处理代理,您必须做很多工作来确保正确处理这些情况,有时明显/简单的解决方案(例如锁)可能会产生瓶颈甚至线性化代码执行的不利影响,因此与单个应用程序相比没有任何好处。

关于Ruby 编程风格 : Asynchronous message passing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com