当我为erlang制作一个C插件时,它会充分利用产卵系统吗?它会阻止吗?

例如,我有一个吃了很多CPU的程序。我制作了一个可以与erlang交互的C插件。我用SMP +16生成了16个线程。与多核上的pthreads相比,它会给我类似的性能吗?线程不需要彼此通信。     
已邀请:
在“erlang”上下文中没有明确定义“C插件”。 要么你正在编写一个基本上用于系统进程的端口。 或者您正在编写一个链接的驱动程序,该驱动程序在与Erlang vm相同的上下文中运行。 在这两种情况下,您都可以利用多核cpu。第一种情况只是依赖操作系统将操作系统进程放在不同的CPU上(任何体面的SMP操作系统应该都能够)。 在第二种情况下,我不太确定,但我希望驱动程序也能在不同的CPU内核上运行。除非您有充分的理由使用链接驱动程序并且您确切知道自己在做什么,否则出于复杂性和稳定性的原因,我建议不要使用它们。如果端口崩溃,则通知Erlang并可以重新启动它或采取其他预防措施。如果一个驱动程序崩溃整个Erlang vm被强行拆除。 主要的问题是你想在Erlang中解决问题的哪个部分,如果你只使用erlang来启动你的“插件”,这可以更容易解决从shell启动进程,因为你的“线程”不需要为了进行通信,为什么不从shell脚本传递命令行上的参数和fork工作进程?     

要回复问题请先登录注册