我有一个使用大量 CPU 的小型 C 程序,该程序编译为 exe ,并且我从我的 C# GUI 中将其作为进程运行。
当我想在所有 CPU 核心上并行运行它时,我有 2 个选择。
我有 4 个 CPU 核心。
从我的 c# 中将这个 c exe 作为 4 个进程运行,以便我的操作系统为每个核心分隔这些进程 1。
编辑我的 C 代码,使其运行 4 个线程,这样操作系统将为每个核心分离 1 个线程,而在 C# 中,我将其作为 1 个进程运行。
哪种方式会更快?
编辑:这些进程/线程将运行大约 3-5 小时,并且不需要在其他线程/进程之间进行通信。
所有这些都在 Windows 上运行
最佳答案
在 C 中运行 4 个线程比在 C# 中运行 4 个进程更快。
进程之间的切换比线程之间的切换代价更高,并且进程之间的通信比线程之间的通信慢。
关于C 并行线程与并行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53054301/