http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspxSemáforo: ¿Cuál es el uso del recuento inicial?
Para crear un semáforo, necesito proporcionar un recuento inicial y un recuento máximo. MSDN afirma que es un recuento inicial -
El número inicial de solicitudes de el semáforo que se puede conceder simultáneamente.
Si bien afirma que cuenta máxima es
El número máximo de solicitudes de el semáforo que se puede conceder simultáneamente.
Entiendo que el recuento máximo es la cantidad máxima de subprocesos que pueden acceder a un recurso al mismo tiempo. Pero, ¿para qué sirve el recuento inicial?
Si creo un semáforo con un recuento inicial de 0 y un recuento máximo de 2, ninguno de mis subprocesos de subprocesos puede acceder al recurso. Si configuro el recuento inicial como 1 y el recuento máximo como 2, solo el subárbol de subprocesos puede acceder al recurso. Solo cuando establezco el recuento inicial y el recuento máximo como 2, 2 subprocesos pueden acceder al recurso al mismo tiempo. Entonces, ¿estoy realmente confundido sobre la importancia del recuento inicial?
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
¿Cómo es que nunca aceptó la respuesta de SVGreg? – john