【问题标题】:C++ multi threads vs multi processes - which is faster?C++ 多线程与多进程——哪个更快?
【发布时间】:2023-01-14 07:48:09
【问题描述】:

我有大约 50 个类似的任务——每个任务都对某个服务器执行网络调用并将响应写入数据库。每个任务都有自己的一组调用。如果相关的话,每个任务都会与一台服务器通信。 我可以有一个进程,每个进程都运行自己的任务,并执行自己的一组调用(因此线程之间不需要内存共享)。另一种选择是每个任务的过程。或组合。 我是否应该选择多线程,因为在进程之间切换成本更高? 它在 Ubuntu 上运行。

【问题讨论】:

  • 创建进程比创建线程成本更高
  • 试试看,一般很难说。就内核而言,线程和进程之间没有太大区别
  • 太多的未知变量要说。但总的来说,进程的启动成本比线程高,但从长远来看,启动成本会逐渐消失。除非你不断地创建新的进程或线程。如果是这种情况,请考虑合并。

标签: c++ linux multithreading ubuntu multiprocessing


【解决方案1】:

严格来说,就性能而言,它归结为初始化时间,因为就执行时间而言,在这种不需要进程间通信的特殊情况下,执行时间将非常相似。

线程初始化速度更快,因为要初始化的资源重复更少。

但是,如果运行时间比初始化时间长得多,比如进程运行几分钟而启动需要几毫秒,那么性能肯定应该是一样的,你的要求应该是其他的,比如进程的管理设施批。

由于系统资源的使用较少,使用线程可能还有一些额外的好处,但我相信这些可以忽略不计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2012-03-17
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多