【发布时间】:2015-08-20 16:45:03
【问题描述】:
c# ManualResetEvent 和 AutoResetEvent 类的创建或维护成本高吗?
它们是否消耗某种有限的 Windows 内核资源,如果是,那么它的限制程度如何?
例如如果我的代码可以每 100 毫秒创建一个新的 AutoResetEvent(稍后将被释放),我是否应该担心将旧的 AutoResetEvents 放入池中并重用它们,或者这不是一个重要的问题?
由于它们是 IDisposables,我认为它们消耗某种有限的资源。他们消耗了多少,我应该在什么时候开始担心使用太多?
有ManualResetEventSlim,但没有AutoResetEventSlim,这也让我有点担心。
【问题讨论】:
-
我会建议一种替代设计,它不需要创建所有这些动态事件。
-
感谢您的建议,这也是我的直观理解。你为什么要建议呢?动态创建这些事件的隐藏成本到底是多少?
-
它基于嵌入式系统的经验。通常线程和线程同步对象都是预先创建的。
-
这非常适合“如果您需要知道,那么您做错了”类别。限制远远超出了您完全失去对程序中线程的控制的程度。取决于最大分页内核内存池大小,百万。
标签: c# .net autoresetevent manualresetevent waithandle