我有一个程序,我使用SemaphoreSlim来管理运行特定代码段的线程数。我这样做是为了确保我不会压倒系统。我想知道在没有信号量的情况下是否还有其他方法可以做到这一点。我查看了ThreadPool,我不确定是不是就是这样。这是我正在做的一个例子。
semaphore.Wait();
if (Options.MaxMessagesPerSecond.HasValue)
{
Throttle();
}
if (Options.ConcurrentDispatch)
{
ThreadPool.QueueUserWorkItem(Send, args);
return;
}
try
{
Extensions.RaiseEvent(Send, this, args);
}
finally
{
semaphore.Release();
}
有代码处理释放其他地方以覆盖返回。我真的很想知道是否还有另一种方法可以在不使用信号量的情况下限制运行的线程数。