gpt4 book ai didi

c# - AutoResetEvent/ManualResetEvent 消耗什么资源?

转载 作者:行者123 更新时间:2023-11-30 12:57:56 25 4
gpt4 key购买 nike

是c# ManualResetEventAutoResetEvent创建或维护类的成本很高吗?

它们是否消耗某种有限的 Windows 内核资源,如果是,它的限制程度如何?

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

因为它们是 IDisposables,我假设它们消耗某种有限的资源。他们到底消耗了多少,我应该从什么时候开始担心使用太多?

有 ManualResetEventSlim 而没有 AutoResetEventSlim 的事实也让我有点担心。

最佳答案

ManualResetEvent 使用 Wait Handles而 ManualResetEventSlim 使用 Busy Spinning

按顺序,最佳性能是:1) 标准锁定(Monitor)2) “slim”事件类 3) 标准事件类

鉴于您的用例,我建议您使用“ slim ”类,因为您只会等待很短的时间。此外,如果“ slim ”类等待时间过长,它无论如何都会表现为“非 slim ”类。

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


编辑:这就是为什么 AutoResetEvent没有“slim”版本——基本上是因为 AutoResetEvent 的等待时间通常比 ManualResetEvent 长,所以不适合使用“busy spinning”


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

参见 herehere获取更多信息。


关于c# - AutoResetEvent/ManualResetEvent 消耗什么资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com