http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx
Чтобы создать семафор, мне нужно указать начальный счетчик и максимальное количество. MSDN утверждает, что начальный счетчик -
Исходное количество запросов для семафор, который может быть предоставлен одновременно.
Пока указывается, что максимальное количество
Максимальное количество запросов для семафор, который может быть предоставлен одновременно.
Я могу понять, что максимальное количество - это максимальное количество потоков, которые могут одновременно обращаться к ресурсу. Но каково использование начального счета?
Если я создаю семафор с начальным числом 0 и максимальным числом 2, ни один из моих потоков потока не сможет получить доступ к ресурсу. Если я установил начальный счет как 1, а максимальное число равно 2, то поток ресурсов потока может получить доступ к ресурсу. Только когда я устанавливаю как начальный счет, так и максимальный счет как 2, 2 потока могут одновременно обращаться к ресурсу. Итак, я действительно запутался в значении исходного счета?
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(0, 2); //all threadpool threads wait
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1, 2);//only one thread has access to the resource at a time
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(2, 2);//two threadpool threads can access the resource concurrently