我们如何限制 .net 库的用户和/或线程数?
我们希望为不同的用户组提供不同的库版本:1)单用户:最多 1 个用户,1 个线程
2) 多用户,最多 50 个用户和/或线程 例如,此版本可容纳 50 个用户,每个 1 个线程,或 25 个用户,每个 2 个线程
3) 多用户,最多 100 个用户和/或线程 .. 等等。
我们如何使用 c# 以最简单的方式做到这一点?赛琳娜
我们如何限制 .net 库的用户和/或线程数?
我们希望为不同的用户组提供不同的库版本:1)单用户:最多 1 个用户,1 个线程
2) 多用户,最多 50 个用户和/或线程 例如,此版本可容纳 50 个用户,每个 1 个线程,或 25 个用户,每个 2 个线程
3) 多用户,最多 100 个用户和/或线程 .. 等等。
我们如何使用 c# 以最简单的方式做到这一点?赛琳娜
定义一个信号量并在其上同步:
static readonly SemaphoreSlim semaphore = new Semaphore(50);
...
//before your library does anything
semaphore.Wait(TimeSpan.FromSeconds(120)); //timeout to prevent deadlocks
幸运的是,你需要的一切都内置在这个类中。
您可能应该添加等待超时,否则您可能会导致死锁,并且您的客户会认为您的库不可靠。如果等待超时,您可能应该只允许访问。