C 并行线程与并行进程

标签 c windows multithreading parallel-processing

我有一个使用大量 CPU 的小型 C 程序,该程序编译为 exe ,并且我从我的 C# GUI 中将其作为进程运行。

当我想在所有 CPU 核心上并行运行它时,我有 2 个选择。

我有 4 个 CPU 核心。

  1. 从我的 c# 中将这个 c exe 作为 4 个进程运行,以便我的操作系统为每个核心分隔这些进程 1。

  2. 编辑我的 C 代码,使其运行 4 个线程,这样操作系统将为每个核心分离 1 个线程,而在 C# 中,我将其作为 1 个进程运行。

哪种方式会更快?

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

所有这些都在 Windows 上运行

最佳答案

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

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

关于C 并行线程与并行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53054301/

相关文章:

java - Java 中的 OpenMP 任务

c++ - 为什么在 C/C++ 中重复包含一些头文件?

c - 使用线程通过相同的结构传递数据和检索数据

c - 如何修复 GCC 错误 : "asm/socket.h: No such file" on Sli-Taz Linux?

javascript - 寻找将 WEB 应用程序与 Silverlight 和 VB6 集成的客户端集成解决方案

c# - NLog 挂起(多线程问题?)

c - "error: expected expression before struct"在宏参数到 `offsetof` 与 musl 的宏函数内

c++ - 多窗口 CMD

c - 在 Windows 中使用 C 的 UART

java - py4J 在多线程java上获取新的通信 channel 时出错