运行一个产生 N 个线程的进程还是运行 N 个进程更快?

ter*_*don 6 parallel-processing multithreading

我意识到这在很大程度上取决于相关流程,但是否有经验法则?

假设我有一个名为的多线程程序progX,它提供一个命令行开关 ( --cpu) 来控制它可以使用的 CPU 数量。启动 40 个并行实例每个使用一个 CPU ( progX --cpu 1) 还是启动单个实例并告诉它使用 40 个 CPU ( progX --cpu 40)是否更快?

can*_*cas 2

到目前为止,启动单个实例的速度更快。线程就是为此目的而创建的,并且它们比进程更轻。事实上的规则是:让操作系统来做调度和内存管理,除非你需要自己做脏活。这样你的代码将会更加简单和干净。操作系统有许多较低级别的工具可以更有效地处理进程和内存。当然,这取决于操作系统,但这是现代操作系统的一般规则,至少是我使用的操作系统(Linux)。