2014-05-12 108 views
0

还有一些类似的实现SemaphoreSemaphoreSlim允许再入? 实施此功能的最佳方式是什么,它是安全使用Thread.CurrentThread.ManagedThreadIdConcurrentDictionary或可能是字段[ThreadStatic]属性?再入信号量

+1

为什么你需要这个?这似乎是一个坏主意。为什么不能简单地释放信号量,然后再决定是否需要稍后重新输入信号量?另外,为什么你不能将信号条目包装在分支代码中而不是将它放在中间? –

+0

从多种方式组合一个锁定资源,以不同的方式组成,以实现代码重用。 –

回答

1

不确定SemaphoreSlim是来自哪个库,但是一般来说,“递归”信号量与递归互斥量有意义的方式无关。一个信号量可以是用作作为互斥量,但它也可以用于其他目的。将“递归”功能添加到互斥体使其更加强大。将“递归”功能添加到信号量会降低其功能。