[英]What is the difference between ManualResetEvent and AutoResetEvent in .NET?
[英]What resources do AutoResetEvent / ManualResetEvent consume?
c# ManualResetEvent和AutoResetEvent類是否很難創建或維護?
他們是否消耗某種有限的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.