有关ManualResetEventSlim状态的MSDN文档



“很短”要多长时间?在什么时候使用带有ManualResetEvent的内核对象的好处会超过实例化它的开销?

最佳答案

这是我发现的,并且希望其他人对此进行验证,但这是我在阅读Reference Source for ManualResetEventSlim时发现的结果

ManualResetEventSlim
它试图根据处理器的数量来 sleep 并屈服,并进行极短的 sleep -1ms或0ms,具体取决于其当前的旋转指数。如果仍然没有足够的时间,它将使用原始传入的超时的新更新版本恢复为Monitor.Wait

为Thread.Sleep传递0可以减轻它的时间片。

ManualResetEvent
它使用WaitHandle并调用 native 方法来处理等待指定的时间。不幸的是,我看不到它在做什么。

我的结论
“非常短”表示仅几毫秒。

编辑:我刚刚发现了其中有很多信息:

  • How long is a single spin in ManualResetEventSlim
  • http://social.msdn.microsoft.com/Forums/vstudio/en-US/9ce62320-68fe-4d07-8576-f30a0325a68c/when-to-use-manualreseteventslim?forum=parallelextensions
  • 关于c# - ManualResetEventSlim建议的等待时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24310551/

    10-11 14:20