Семафор - Какая польза от начального подсчета?

http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx

Чтобы создать семафор, мне нужно предоставить начальный и максимальный подсчет. семафор, который может быть предоставлен одновременно.

Хотя в нем указано, что максимальное количество составляет

Максимальное количество запросов для семафор, который может быть предоставлен одновременно.

Я могу понять, что максимальное количество - это максимальное количество потоков, которые могут обращаться к ресурсу одновременно. Но какой смысл в начальном подсчете?

Если я создаю семафор с начальным счетчиком 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

72
задан Sandbox 16 January 2011 в 17:03
поделиться