0
还有一些类似的实现Semaphore
或SemaphoreSlim
允许再入? 实施此功能的最佳方式是什么,它是安全使用Thread.CurrentThread.ManagedThreadId
和ConcurrentDictionary
或可能是字段[ThreadStatic]
属性?再入信号量
还有一些类似的实现Semaphore
或SemaphoreSlim
允许再入? 实施此功能的最佳方式是什么,它是安全使用Thread.CurrentThread.ManagedThreadId
和ConcurrentDictionary
或可能是字段[ThreadStatic]
属性?再入信号量
不确定SemaphoreSlim是来自哪个库,但是一般来说,“递归”信号量与递归互斥量有意义的方式无关。一个信号量可以是用作作为互斥量,但它也可以用于其他目的。将“递归”功能添加到互斥体使其更加强大。将“递归”功能添加到信号量会降低其功能。
为什么你需要这个?这似乎是一个坏主意。为什么不能简单地释放信号量,然后再决定是否需要稍后重新输入信号量?另外,为什么你不能将信号条目包装在分支代码中而不是将它放在中间? –
从多种方式组合一个锁定资源,以不同的方式组成,以实现代码重用。 –