【发布时间】:2019-04-02 21:42:23
【问题描述】:
我有一个使用大量 cpu 的小型 c 程序,该程序编译为 exe,我将它作为我的 c# gui 中的进程运行。
当我想在我的所有 cpu 内核上并行运行它时,我有 2 个选项。
我有 4 个 cpu 核心。
从我的 c# 中将这个 c exe 作为 4 个进程运行,这样我的操作系统就会为每个核心分离这些进程 1。
编辑我的 c 代码,使其运行 4 个线程,因此 os 将为每个内核分离 1 个线程,并从 c# 中将其作为 1 个进程运行。
哪种方式会更快?
编辑:这些进程/线程将运行 3-5 小时,并且不需要在另一个线程/进程之间进行通信。
所有这些都在 Windows 上运行
【问题讨论】:
-
这将取决于很多因素,例如进程运行多长时间,它们执行什么操作,它们是否(以及多少)需要相互通信等等在。找出答案的最好方法是两种方法都试一下,看看是否有影响,如果有,影响多少。
-
您需要提供更多信息。在并行线程上运行速度很可能比在单线程上运行得慢,这取决于它们执行的任务。
标签: c windows multithreading parallel-processing