0
還有一些類似的實現Semaphore
或SemaphoreSlim
允許再入? 實施此功能的最佳方式是什麼,它是安全使用Thread.CurrentThread.ManagedThreadId
和ConcurrentDictionary
或可能是字段[ThreadStatic]
屬性?再入信號量
還有一些類似的實現Semaphore
或SemaphoreSlim
允許再入? 實施此功能的最佳方式是什麼,它是安全使用Thread.CurrentThread.ManagedThreadId
和ConcurrentDictionary
或可能是字段[ThreadStatic]
屬性?再入信號量
不確定SemaphoreSlim是來自哪個庫,但是一般來說,「遞歸」信號量與遞歸互斥量有意義的方式無關。一個信號量可以是用作作爲互斥量,但它也可以用於其他目的。將「遞歸」功能添加到互斥體使其更加強大。將「遞歸」功能添加到信號量會降低其功能。
爲什麼你需要這個?這似乎是一個壞主意。爲什麼不能簡單地釋放信號量,然後再決定是否需要稍後重新輸入信號量?另外,爲什麼你不能將信號條目包裝在分支代碼中而不是將它放在中間? –
從多種方式組合一個鎖定資源,以不同的方式組成,以實現代碼重用。 –