Qual è il Mutex e il semaforo In c #? dove dobbiamo implementare?

Qual è il Mutex e il semaforo in C #? Dove dobbiamo implementare?

Come possiamo lavorare con loro nel multithreading?

Dovresti iniziare da MSDN.

  • System.Threading.Mutex : una primitiva di sincronizzazione che può essere utilizzata anche per la sincronizzazione dei processi.
  • System.Threading.Semaphore : limita il numero di thread che possono accedere a una risorsa o un pool di risorse contemporaneamente.

Generalmente si utilizza un Mutex solo in tutti i processi, ad esempio se si dispone di una risorsa che deve essere condivisa da più applicazioni o se si desidera creare un’applicazione a singola istanza (ovvero consentire l’esecuzione di una sola copia contemporaneamente).

Un semaforo consente di limitare l’accesso a un numero specifico di thread simultanei, in modo da poter disporre, ad esempio, di un massimo di due thread che eseguono un percorso di codice specifico alla volta.

Vorrei iniziare leggendo questo: http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials e poi rafforzarlo con i link MSDN pubblicati da bobbymcr.

Potresti voler controllare la dichiarazione di blocco. È in grado di gestire la maggior parte delle attività di sincronizzazione dei thread in C #

class Test { private static object Lock = new object(); public function Synchronized() { lock(Lock) { // Only one thread at a time is able to enter this section } } } 

L’istruzione di blocco viene implementata chiamando Monitor.Enter e Monitor.Exit. È equivalente al seguente codice:

 Monitor.Enter(Lock); try { // Only one thread at a time is able to enter this section } finally { Monitor.Exit(Lock); }