代码之家  ›  专栏  ›  技术社区  ›  Jeff Cyr

.Net如何创建跨进程的所有AppDomain共享的自定义线程池?

  •  4
  • Jeff Cyr  · 技术社区  · 16 年前

    我制作了一个定制线程池,针对我的特定需求进行了优化。但是,当进程中有多个AppDomain时,CLR线程池可以在所有AppDomain之间共享,我希望能够重现这种行为。

    这可以使用MarshallByRefObject和Remoting来创建分布式线程池,但我担心这会增加不必要的开销,因为自定义线程池的关键目标是性能。

    因此,我的问题是:

    1. 有没有办法定制 最小开销?
    2. 如果没有,是吗 对象跨AppDomain?
    2 回复  |  直到 16 年前
        1
  •  2
  •   Steve Cooper    16 年前

    在每个appdomain中创建一个新的线程池实例,然后使用 semaphore 控制在所有实例上运行的线程总数。这意味着您仍然可以处理相同的总并发作业,但不需要编组。

    MSDN文档有一个例子。

        2
  •  0
  •   Jeff Cyr    16 年前

    仔细考虑之后,尝试重新实现进程范围的线程池可能是个坏主意,CLR线程池已经为此进行了优化。