http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspxSemafor - Jaki jest pożytek z początkowego liczenia?
Aby utworzyć semafor, muszę podać początkową liczbę i maksymalną liczbę. MSDN stwierdza, że początkowa liczba jest -
Początkowa liczba wniosków o semafora, który może zostać przyznany jednocześnie.
Choć twierdzi, że maksymalna liczba to
Maksymalna liczba wniosków o semafora, który może zostać przyznany jednocześnie.
Rozumiem, że maksymalna liczba to maksymalna liczba wątków, które mogą jednocześnie uzyskać dostęp do zasobu. Ale jaki jest pożytek z początkowego liczenia?
Jeśli utworzę semafor z początkową liczbą 0 i maksymalną liczbą 2, żaden z moich wątków wątków nie będzie mógł uzyskać dostępu do zasobu. Jeśli ustawię początkową liczbę jako 1 i maksymalną liczbę jako 2, to tylko wątek puli wątków może uzyskać dostęp do zasobu. Dopiero gdy ustawię zarówno początkową liczbę, jak i maksymalną liczbę jako 2, 2 wątki będą mogły uzyskać równoczesny dostęp do zasobu. Tak więc jestem naprawdę zdezorientowany co do znaczenia początkowej liczby?
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
Dlaczego nigdy nie przyjąłeś odpowiedzi SVGreg? – john