2012-05-04 15 views
5

Stavo leggendo su mutex, semafori e sezioni critiche. Capisco che il mutex sincronizza una risorsa in modo che solo un thread acceda in un momento in cui un semaforo consente a uno specifico numero di thread di accedere a una risorsa, ma cosa fanno le sezioni critiche ??Cosa sono le sezioni critiche nei thread

+0

Stai parlando di Windows o in generale? –

+7

Leggi questo - http://en.wikipedia.org/wiki/Critical_section, e poi torna con una domanda più specifica se ancora non ha senso. –

+0

Mi sembra di leggere che l'articolo di wikipedia che i semafori e le sezioni critiche sono gli stessi? – Rajeshwar

risposta

13

In condizioni normali, una sezione critica è una sezione di codice che deve essere eseguita in serie, vale a dire, solo un thread può eseguire quel codice in un dato momento. Normalmente lo si ottiene proteggendo il codice con un semaforo mutex.

In linguaggio di Windows, una sezione critica è una struttura di dati (e alcune funzioni associate) che implementano in un semaforo mutex specifico del processo (cioè, utilizzato solo per il blocco tra thread in un singolo processo, non tra processi separati).

Esistono due varietà di semafori. Un semaforo mutex consente l'esecuzione di un solo thread alla volta. Un semaforo contato consente di specificare il numero massimo di thread che possono essere eseguiti simultaneamente. I semafori mutex sono la varietà più comune, ma i semafori contati hanno sicuramente anche degli usi.

+0

Grazie che ha senso – Rajeshwar

+0

È un "semiforo mutex" la stessa cosa di un "semaforo binario" (c'è una domanda [SO: Relativo] (http://stackoverflow.com/questions/62814/difference-between-binary-semaphore -e-mutex))? La terminologia può confondere a volte. –

+0

No, i due non sono proprio gli stessi. Un mutex bloccato può essere sbloccato solo da chiunque abbia precedentemente bloccato. Un semaforo binario bloccato può essere sbloccato da chiunque. –

Problemi correlati