Junior — Middle
Puoi elencare i tipi esistenti di mutua esclusione (mutex)?
sobes.tech AI
Risposta dell'AI
Esistono diversi tipi di mutex (mutua esclusione) in C/C++, che differiscono per implementazione e funzionalità:
- Mutex semplice (normale) — meccanismo di blocco di base che garantisce accesso esclusivo a una risorsa.
- Mutex ricorsivo — permette allo stesso thread di acquisire il mutex più volte senza bloccarsi.
- Mutex con timeout — mutex che può essere tentato con un limite di tempo.
- Mutex con controllo degli errori — mutex che verifica gli errori, ad esempio, tentare di acquisirlo più volte dallo stesso thread genera un errore.
Nella libreria standard C++11 sono disponibili i seguenti tipi:
std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex
Esempio di utilizzo di std::recursive_mutex:
#include <mutex>
std::recursive_mutex mtx;
void recursive_function(int count) {
mtx.lock();
if (count > 0) {
recursive_function(count - 1);
}
mtx.unlock();
}
La scelta del tipo di mutex dipende dal compito e dai requisiti di blocco.