我有以下类来管理对资源的访问:
class Sync : IDisposable
{
private static readonly SemaphoreSlim Semaphore = new SemaphoreSlim(20);
private Sync()
{
}
public static async Task<Sync> Acquire()
{
await Semaphore.WaitAsync();
return new Sync();
}
public void Dispose()
{
Semaphore.Release();
}
}
用法:
using (await Sync.Acquire())
{
// use a resource here
}
现在它允许不超过 20 个共享用法。
如何修改此类以允许每单位时间不超过 N 次共享使用(例如,每秒不超过 20 次)?
最佳答案
“每秒20个”与“一次20个”完全不同。我建议您将线程同步抛在脑后,使用能够更自然地处理时间作为概念的更高级别的抽象。
特别是,Reactive Extensions有许多不同的节流运算符。
关于c# - 定时信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24311548/