SemaphorSlim的示例,其中maxCount实际上是有用的

时间:2016-04-15 13:39:03

标签: .net multithreading async-await task-parallel-library semaphore

我无法提出半实际场景/用例,其中SemaphorSlim的{​​{1}}参数是必需的功能。在我看来,maxCount的典型用例是限制对某些资源的并发访问,表示为“我只希望X线程能够同时执行方法Xyz()”。我考虑这种能力的方式是允许线程进入Xyz()直到分配所有“槽”,然后所有其他线程等待。当一个“槽”打开时,允许其中一个等待线程占用或检出该槽并继续执行Xyz()。 有人负责致电SemaphorSlimWait。最直接的方法是在调用Xyz()之前让线程自己调用Release,然后在调用Xyz()之后调用Wait

Release只是一个防范错误代码的功能吗?如果您已正确编写了try / finally,并且可以保证maxCountWait的任何线程,那么Release就不可能超过初始计数。

CurrentCount的文档暗示你会以某种方式调用maxCount多次Release并且如果发生太多,你希望系统抛出。我无法想到一个很好的用例。

0 个答案:

没有答案