clase SemaphoreSlim limita el número de hilos de acceder simultáneamente a un recurso
Código es el siguiente:
. 1 estática SemaphoreSlim SemaphoreSlim = nuevo nuevo SemaphoreSlim ( 4. ); 2 . 3 estático void AccessDatabase ( Cadena nombre, int segundos Los) 4. { 5. Console.WriteLine ($ " {nombre} de espera para el acceso a la base de datos " ); . 6 semaphoreSlim.Wait (); . 7 Consola .WriteLine ($ " {} está autorizado a acceder el nombre de base de datos " ); . 8 los Thread.Sleep (TimeSpan.FromSeconds segundos (la)); . 9 Console.WriteLine ($ "{Nombre} ha terminado de acceder a la base de datos " ); 10 semaphoreSlim.Release (); . 11 } 12 es 13 es estático void la principal ( Cuerda [] args) 14 { 15 para ( int I = 1. ; I <= 6. ; I ++ ) 16 { . 17 cadena threadName $ = " hilo} {I " ; 18 es int SecondsToWait = 2 + 2 * I; . 19 var t = new newHilo (() => AccessDatabase (threadName, secondsToWait)); 20 t.Start (); 21 } 22 Console.ReadLine (); 23 }
El resultado: