Semaforo

Nella programmazione, specialmente nei sistemi Unix, i semafori sono una tecnica per coordinare o sincronizzare attività in cui più processi competono per le stesse risorse del sistema operativo. Un semaforo è un valore in una posizione designata nella memoria del sistema operativo (o kernel) che ogni processo può controllare e quindi modificare. A seconda del valore trovato, il processo può utilizzare la risorsa o scoprirà che è già in uso e dovrà attendere un po 'di tempo prima di riprovare. I semafori possono essere binari (0 o 1) o possono avere valori aggiuntivi. In genere, un processo che utilizza i semafori controlla il valore e quindi, se utilizza la risorsa, modifica il valore per riflettere questo in modo che i successivi utenti del semaforo sappiano di attendere.

I semafori vengono comunemente utilizzati per due scopi: condividere uno spazio di memoria comune e condividere l'accesso ai file. I semafori sono una delle tecniche per la comunicazione tra processi (IPC). Il linguaggio di programmazione C fornisce un insieme di interfacce o "funzioni" per la gestione dei semafori.