gpt4 book ai didi

erlang - 分布式Erlang发送大消息有哪些性能特点?

转载 作者:行者123 更新时间:2023-12-02 09:51:06 25 4
gpt4 key购买 nike

假设我在 Erlang 应用程序中创建新的本地进程,并且我想向它发送一条大消息。

-module(chain_hello). 

start(N, Some_big_data)->
Pid1 = spawn(chain_hello, some_fun, [N]),
Pid1 ! Some_big_data,
io:format("done \n").

尽管Some_big_data是对真正大数据的引用(例如文件的内容) - 发送时是否会复制?性能有很大的损失吗?

通常我会使用一些线程安全的共享对象(和/或互斥体)。 Erlang中有没有解决方案可以避免复制消息内容?

添加:
有趣的情况是,当 Some_big_data 是结构化内容时 - 具体来说: map ,我可以在其上执行一些操作。

添加2
好吧,我发现 Erlang 没有这样的解决方案(在工作进程中共享一些结构化数据,例如 map ) - 由于 Erlang 设计。但我认为这是通过扎实的工作和轻松的并发管理来证明的。

最佳答案

来自Erlang Efficiency Guide :

All data in messages between Erlang processes is copied, with the exception of refc binaries on the same Erlang node.

是的,您应该避免在进程之间发送大术语。如果您需要发送大量数据,请以二进制形式发送。

关于erlang - 分布式Erlang发送大消息有哪些性能特点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5394566/

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