【问题标题】:Multiple Threads vs Multiple Processes多线程与多进程
【发布时间】:2015-09-10 20:14:16
【问题描述】:

我正在开发一个需要搜索超大状态空间的应用程序。为了做到这一点,我已经获得了对具有 32 个核心的集群节点的访问权限。我的程序不需要太多内存(可能大约 10 兆字节),我也不需要做太多 IO(除了在找到某个文本文件时输出解决方案)。所以我的问题变成了:对我来说,编写一个程序比启动多个线程以并行执行搜索更好,还是与启动相同进程的实例一样,使得搜索空间在它们(用不同的命令行参数指定)?

在我的情况下,可以独立搜索空间,因此我不需要线程/进程之间的任何共享内存。我只关心搜索效率。值得注意的是,该程序可能需要运行数周至数月。请原谅我的无知,我是理论背景的。

【问题讨论】:

  • CentOS 6 - 将用 C/C++ 编写。
  • 对于完美分区问题,使用线程和进程之间可能没有性能差异。使用任何你觉得更舒服的东西。不过,进程的一个优点是:如果单个工作线程崩溃,则只需重新启动该工作线程,而在多线程程序中,一个线程崩溃可能会导致一切崩溃。
  • 从维护的角度来看,多进程通常也是要走的路。由于数据可以完美分区,因此更容易横向扩展至更多节点以获得额外性能。
  • 多节点/进程正是 solr 云的设计方式。您的搜索可能不属于 solr 用例,但设计似乎相似。

标签: linux multithreading


【解决方案1】:

除了考虑基础设施和维护方面的任何其他问题。 更有用的是 - 拥有一个多线程应用程序或应用程序的多个实例。

如果有机会,您需要在不同条件下或在不同物理机/分布式上以不同方式启动,而不是多个应用程序将是一种解决方案,但这样您需要考虑日志、部署和其他维护问题。

一般来说,如果你想让它变得简单,比使用多线程单实例化应用程序。

【讨论】:

    【解决方案2】:

    我会说,多进程。您根本不需要处理同步,也不会有加入线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 2021-09-08
      • 1970-01-01
      • 2023-01-14
      • 2023-03-07
      相关资源
      最近更新 更多