【问题标题】:Why multi-threading is often combined with multiprocessing?为什么多线程经常与多处理结合使用?
【发布时间】:2017-12-27 05:16:07
【问题描述】:

作为一个学校项目,我必须实现一个 http 服务器,所以我查看了现有的 http 服务器架构,然后发现了 worker 多处理模块。

这个模块实现了一个混合的多线程多进程服务器,也就是说,它分叉并且每个分叉的进程产生自己的线程池来处理请求。

这让我想知道,混合多进程多线程程序与仅多线程程序相比有什么优势?为什么不保留一个进程并生成一个更大的线程池?

【问题讨论】:

    标签: multithreading apache multiprocessing


    【解决方案1】:

    可用性。

    你的程序有新出现的缺陷,所以最好让一个实例在 M 个线程上崩溃,而不是让它在 N*M 个线程上崩溃。 (N-1)*M 个其他线程可能能够继续运行,并且您可能已经降低了其中任何一个线程崩溃的可能性。

    这也被部署为一种处理资源泄漏的技术:在处理 N 个事务后,服务器“执行”本身,这会导致其资源的清理。我很确定 Thompson&Ritchie 没有预见到这会作为 exec 的用例......

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 2023-03-03
      • 2011-09-17
      • 1970-01-01
      • 2019-11-27
      • 2019-07-14
      • 2017-09-24
      • 2014-03-23
      相关资源
      最近更新 更多