【发布时间】:2014-08-10 06:48:23
【问题描述】:
我有以下类来管理对资源的访问:
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 次)?
【问题讨论】:
-
你能
Acquire然后在不同的线程中使用资源吗?如果是这样 - 您可以让主线程等待固定的时间,然后释放信号量。只是一个想法 -
也许这可以提供一个想法:stackoverflow.com/questions/18771524/…
标签: c# .net synchronization semaphore