可能重复:
限制一次执行方法的线程数
在单个应用程序中,我们需要将一段代码的执行限制为 4 个线程。这部分不是线程的开始/结束,它是线程内部的一段代码。
如何做到这一点很容易 - 创建一个 EventWaitHandle 并在其上等待/发出信号。但是我想到做 4 的每一种方式都留下了确定我需要等待的可能性,另一个线程存在该部分和信号,然后我等待 - 永远。
那么当所有线程都在一个应用程序中时,最轻量级的方法是什么?
背景:我们正在更改我们的许可模型,以允许最多 N(本示例中为 4 个)线程连续调用我们的库。因为我们是一个库,而不是服务器,所以我们不控制线程的使用(就像数据库一样)。对于 Web 应用程序,调用应用程序也不控制线程数,因此我们需要暂停线程 5 调用我们,直到前 4 个线程退出该代码。