【问题标题】:maximum number of mutexes per process/thread in windowsWindows 中每个进程/线程的最大互斥量
【发布时间】:2010-09-15 05:39:36
【问题描述】:

Asp.net 应用程序中每个进程/线程的最大互斥量是否有限制?

以防万一目标操作系统是:Windows XP Pro、服务器 2003/2008 和不久的将来的 Windows 7。 通常网站部署在 App Pool 中。

【问题讨论】:

    标签: windows mutex max


    【解决方案1】:

    该限制与进程可以拥有的句柄数限制基本相同。这是一个相当大的数字:16,777,216。当然,真正的限制要低得多,这取决于你有多少可用的非分页池,这并没有那么大。

    如果您担心限制,那么您的程序有问题。请记住,临界区通常会延迟任何内核对象的创建,这意味着如果争用很少,您可以拥有大量的内核对象。

    【讨论】:

    • 如果您看到发布的链接,它提到 XP 中的互斥锁最多有 20 个。该站点是一个访问 5 个配置文件的网络农场。
    • 呃,不。有一种简单的方法可以反驳您的说法:打开 Process Explorer 并查看几个不同进程的句柄(包括未命名的句柄)。 Mutant 对象的数量加起来将远远超过 20 个。
    【解决方案2】:

    我要在这里冒险尝试一下,您可能(不一定)做错了什么。

    Raymond Chen 说 best 但是,如果您担心互斥锁的最大数量,您可能会以太细的粒度保护您的资源。

    当然会有一个最大数量,即使它是由可用内存而不是常数决定的。但是,我看不到任何有效的情况,在这种情况下您需要如此多的互斥体以至于您会达到限制。

    我并不是说这不可能,因为我不知道您的应用程序的架构是什么。但如果没有更好的方法,我会感到非常惊讶。

    如果您退后一步,告诉我们“我想要什么”而不是“我是怎么做到的”,我们可以提供更好的建议。

    【讨论】:

    • 网络农场和 1000 名用户访问同一资源(配置文件)
    猜你喜欢
    • 2013-08-31
    • 2023-02-06
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多