簡體   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