我们如何限制.net库的用户和/或线程数?
我们希望为不同的用户组提供不同的库版本: 1)单个用户:最多1个用户,1个线程
2)具有最多50个用户和/或线程的多个用户 例如,这个版本可以容纳50个用户可以拥有每个1个线程,或者每个2个线程拥有25个用户
3)具有最多100个用户和/或线程的多个用户 ..等等。
我们怎样才能用c#做最简单的方法? 周梁淑怡
答案 0 :(得分:2)
定义一个sempahore并同步它:
static readonly SemaphoreSlim semaphore = new Semaphore(50);
...
//before your library does anything
semaphore.Wait(TimeSpan.FromSeconds(120)); //timeout to prevent deadlocks
幸运的是,您需要的所有内容都已构建到此类中。
您应该添加等待超时,否则您可能会导致死锁,并且您的客户会认为您的库不可靠。如果等待超时,您可能只允许访问。