繁体   English   中英

C并行线程与并行进程

[英]C parallel thread vs parallel process

我有一个使用大量cpu的小型c程序,该程序已编译为exe,并且作为c#gui中的进程运行。

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

我有4个CPU核心。

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

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

哪种方法会更快?

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

所有这些都在Windows上运行

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM