如何限制.net库的用户和/或线程数?

时间:2013-08-03 14:29:52

标签: c# .net threadpool

我们如何限制.net库的用户和/或线程数?

我们希望为不同的用户组提供不同的库版本: 1)单个用户:最多1个用户,1个线程

2)具有最多50个用户和/或线程的多个用户 例如,这个版本可以容纳50个用户可以拥有每个1个线程,或者每个2个线程拥有25个用户

3)具有最多100个用户和/或线程的多个用户 ..等等。

我们怎样才能用c#做最简单的方法? 周梁淑怡

1 个答案:

答案 0 :(得分:2)

定义一个sempahore并同步它:

static readonly SemaphoreSlim semaphore = new Semaphore(50);

...

//before your library does anything
semaphore.Wait(TimeSpan.FromSeconds(120)); //timeout to prevent deadlocks

幸运的是,您需要的所有内容都已构建到此类中。

您应该添加等待超时,否则您可能会导致死锁,并且您的客户会认为您的库不可靠。如果等待超时,您可能只允许访问。