我有一个使用很多cpu的小型c程序,该程序编译为exe,然后从我的c#gui作为进程运行它。
当我想在所有cpu内核上并行运行它时,我有2个选项。
我有4个cpu内核。
从我的c#中以4进程运行此exe,以便我的操作系统将每个内核的进程1分开。
编辑我的c代码,使其运行4个线程,因此os将为每个内核分离1个线程,而从c#中,我将其作为1个进程运行。
哪种方法会更快?
编辑:这些进程/线程将运行3-5小时,并且不需要在其他线程/进程之间进行通信。
所有这些都在Windows上运行
答案 0 :(得分:0)
在C中运行4个线程比在C#中运行4个进程要快。
在进程之间进行切换要比在线程之间进行切换要付出更高的代价,并且进程之间的通信要比线程之间慢。
答案 1 :(得分:0)
分配进程需要更多时间来分配线程,因为线程共享资源(代码,数据...)
如果您的cpu连续更改进程(通常发生这种情况)不是使用这些进程的更好解决方案,则使用线程效率更高,特别是在单个cpu系统上...