C并行线程与并行进程

时间:2018-10-29 21:45:44

标签: c windows multithreading parallel-processing

我有一个使用很多cpu的小型c程序,该程序编译为exe,然后从我的c#gui作为进程运行它。

当我想在所有cpu内核上并行运行它时,我有2个选项。

我有4个cpu内核。

  1. 从我的c#中以4进程运行此exe,以便我的操作系统将每个内核的进程1分开。

  2. 编辑我的c代码,使其运行4个线程,因此os将为每个内核分离1个线程,而从c#中,我将其作为1个进程运行。

哪种方法会更快?

编辑:这些进程/线程将运行3-5小时,并且不需要在其他线程/进程之间进行通信。

所有这些都在Windows上运行

2 个答案:

答案 0 :(得分:0)

在C中运行4个线程比在C#中运行4个进程要快。

在进程之间进行切换要比在线程之间进行切换要付出更高的代价,并且进程之间的通信要比线程之间慢。

答案 1 :(得分:0)

分配进程需要更多时间来分配线程,因为线程共享资源(代码,数据...)

如果您的cpu连续更改进程(通常发生这种情况)不是使用这些进程的更好解决方案,则使用线程效率更高,特别是在单个cpu系统上...

https://stackoverflow.com/a/200543/3476815