代码之家  ›  专栏  ›  技术社区  ›  kizzx2

管理多个流程:常见的策略是什么?

  •  2
  • kizzx2  · 技术社区  · 15 年前

    虽然在某些情况下多线程处理速度更快,但有时我们只希望生成多个工作进程来完成工作。这样做的好处是,如果其中一个工作进程崩溃,主应用程序不会崩溃,而且用户不需要太担心互锁问题。

    COM+ Application Pooling 似乎是在Windows上实现这一点的好方法。缺点是我们需要为工作进程编写一个COM+包装器。

    search for Application Pooling on Google ,似乎它的大部分用法都与IIS有关。其他应用程序(如scientific/graphics)不觉得派生多个工作进程很有用吗?

    • 为什么COM+在IIS以外的领域不更受欢迎?如果我写了一个非IIS应用程序并且想在Windows上使用进程管理,我应该使用COM+还是有更好的替代方案?

    6 回复  |  直到 15 年前
        1
  •  3
  •   timday    15 年前

    蟒蛇 .

    global interpreter lock )严重削弱了大多数对多线程python代码的尝试 multiprocessing process pools ;有各种 other options 我也是。

    Python当然应该满足任何多平台的需求!

        2
  •  3
  •   zvrba    15 年前

    runs natively on windows 它支持的多处理模型之一是进程池。apache的一部分也是APR(apacheportableruntime),它处理特定于平台的问题。

        3
  •  2
  •   Akash Kava    15 年前

    没有人能回答为什么有些东西不受欢迎,因为可能没有人在寻找你想要的东西。在.NET出现之后,人们从COM环境转向托管环境,而在.NET之前,COM和ATL等相关技术的实现非常困难,而且会崩溃,调试也非常困难。

    因此,管理型环境应运而生。

    对于多平台,您可以查找zvrba的答案。

        4
  •  2
  •   bbadour    15 年前

    是的,其他应用程序——特别是科学应用程序——发现派生多个进程很有用。由于很少有超级计算机运行微软的Windows,科学家们通常避免使用任何与微软平台相关的东西。与COM相关的任何东西都不能帮助科学家利用他们用Fortran编写的庞大的现有代码库。

    选择运行IIS的人通常已经喝了微软的Koolaid,所以他们很少限制自己绑定到微软的专有平台,这就是为什么COM特定术语会得到大量与IIS相关的点击率。

    看到了吗 http://en.wikipedia.org/wiki/Message_Passing_Interface

        5
  •  2
  •   dthorpe    15 年前

    没有暴徒冲进COM应用程序池的大门,主要是因为两个因素:

    1. 线程可能是一个令人头痛的问题,但是它比进程间通信更容易管理,也更方便

    COM应用程序池基本上是为IIS创建的。与普通的多线程相比,它有一个非常特殊的好处:多个进程彼此完全隔离。在处理稳定性有问题的第三方插件时,这对于数据安全和应用程序稳定性非常重要。

    科学计算一般不需要在操作之间有很强的数据安全隔离,我冒昧地猜测,科学计算不太依赖稳定性有问题的第三方插件。在做大型数学运算时,你要么使用一个性感的数字库,最好是坚如磐石的认真对待,要么你使用自己的代码,在这种情况下,崩溃应该得到纠正,屡犯应该被打屁股。

    简而言之,COM应用程序池对于IIS以外的任何应用程序来说都是杀伤力过大的。

        6
  •  0
  •   tuesday    15 年前