http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspxSemaforo - A che cosa serve il conteggio iniziale?
Per creare un semaforo, è necessario fornire un conteggio iniziale e il conteggio massimo. MSDN afferma che un conteggio iniziale è -
Il numero iniziale di richieste per il semaforo che può essere concesso contemporaneamente.
Mentre si afferma che il massimo conteggio è
Il numero massimo di richieste per la semaforo che può essere concesso contemporaneamente.
Posso capire che il conteggio massimo è il numero massimo di thread che possono accedere a una risorsa contemporaneamente. Ma a che serve il conteggio iniziale?
Se creo un semaforo con un conteggio iniziale di 0 e un conteggio massimo di 2, nessuno dei miei thread del threadpool è in grado di accedere alla risorsa. Se imposto il conteggio iniziale come 1 e il conteggio massimo come 2, solo il thread del thread thread può accedere alla risorsa. È solo quando imposto sia il conteggio iniziale che il conteggio massimo come 2, 2 thread sono in grado di accedere alla risorsa contemporaneamente. Quindi, sono davvero confuso riguardo al significato del conteggio iniziale?
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
Come mai non hai mai accettato la risposta di SVGreg? – john