繁体   English   中英

AutoResetEvent / ManualResetEvent使用哪些资源?

[英]What resources do AutoResetEvent / ManualResetEvent consume?

c# ManualResetEventAutoResetEvent类是否很难创建或维护?

他们是否消耗某种有限的Windows内核资源,如果是这样,它有多受限制?

例如,如果我的代码可以每100毫秒创建一个新的AutoResetEvent(之后不久就要处理),我是否应该担心将旧的AutoResetEvents放入池并重用它们,或者这不是一个重要的问题?

由于它们是IDisposables,我认为它们消耗某种有限的资源。 它们消耗了多少,在哪一点上我应该开始担心使用太多它们?

事实上有一个ManualResetEventSlim,但没有AutoResetEventSlim也让我有点担心。

ManualResetEvent使用Wait Handles,而ManualResetEventSlim使用Busy Spinning

按顺序排列的最佳性能是:1)标准锁定(监视器)2)“苗条”事件类3)标准事件类

考虑到你的用例,我建议使用“瘦”类,因为你只会等待很短的时间。 而且,如果一个“苗条”的课程等待太长时间,它无论如何都表现为“非苗条”课程。

请注意,您不能跨进程使用“苗条”类。


编辑:这就是为什么AutoResetEvent没有“苗条”版本 - 基本上是因为AutoResetEvent的等待时间通常比ManualResetEvent长,所以不适合使用“忙碌的旋转”


编辑:等待句柄继承自MarshalByRefObject。 最终,.NET运行时设置了一个代理(TransparentProxy类),用于远程访问等待句柄。

有关更多信息,请参见此处此处


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM