gpt4 book ai didi

erlang - 当我为 erlang 制作 C 插件时,它会充分利用生成系统吗?它会阻塞吗?

转载 作者:行者123 更新时间:2023-12-02 00:36:19 25 4
gpt4 key购买 nike

例如,我有一个占用大量 CPU 的程序。我制作了一个可以与 erlang 交互的 C 插件。我用 SMP +16 产生了 16 个线程。与多核上的 pthreads 相比,它会给我类似的性能吗?线程不需要相互通信。

最佳答案

“C 插件”在 erlang 上下文中没有明确定义。

要么你正在编写一个基本上派生系统进程的端口。

或者您正在编写链接驱动程序,它在与 Erlang 虚拟机相同的上下文中运行。

在这两种情况下,您都可以利用多核 CPU。第一种情况仅依赖操作系统将操作系统进程放置在不同的 CPU 上(任何体面的 SMP 操作系统都应该能够做到)。

在第二种情况下,我不太确定,但我希望驱动程序也能在不同的 CPU 内核上运行。除非你有充分的理由使用链接驱动程序并且你确切地知道你在做什么,否则出于复杂性和稳定性原因我建议不要使用它们。如果端口崩溃,Erlang 会收到通知并可以重新启动它或采取其他预防措施。如果一个驱动程序崩溃了,整个 Erlang 虚拟机都会被严重破坏。

主要问题是你想在 Erlang 中解决问题的哪一部分,如果你只使用 erlang 来启动你的“插件”,那么只需从 shell 启动进程就可以更容易地解决这个问题,因为你的“线程”不需要通信,为什么不在命令行上传递参数并从 shell 脚本中 fork 工作进程?

关于erlang - 当我为 erlang 制作 C 插件时,它会充分利用生成系统吗?它会阻塞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454690/

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