我无法提出半实际场景/用例,其中SemaphorSlim
的{{1}}参数是必需的功能。在我看来,maxCount
的典型用例是限制对某些资源的并发访问,表示为“我只希望X线程能够同时执行方法Xyz()”。我考虑这种能力的方式是允许线程进入Xyz()直到分配所有“槽”,然后所有其他线程等待。当一个“槽”打开时,允许其中一个等待线程占用或检出该槽并继续执行Xyz()。 有人负责致电SemaphorSlim
和Wait
。最直接的方法是在调用Xyz()之前让线程自己调用Release
,然后在调用Xyz()之后调用Wait
。
Release
只是一个防范错误代码的功能吗?如果您已正确编写了try / finally,并且可以保证maxCount
将Wait
的任何线程,那么Release
就不可能超过初始计数。
CurrentCount
的文档暗示你会以某种方式调用maxCount
多次Release
并且如果发生太多,你希望系统抛出。我无法想到一个很好的用例。