Junior — Middle
Kun je de bestaande types van onderlinge uitsluitingen (mutex) opsommen?
sobes.tech AI
Antwoord van AI
Er zijn verschillende soorten mutexen (mutual exclusion) in C/C++, die verschillen in implementatie en mogelijkheden:
- Eenvoudige (normale) mutex — basismechanisme voor blokkering dat exclusieve toegang tot een resource garandeert.
- Recursieve mutex — stelt dezelfde thread in staat om de mutex meerdere keren te vergrendelen zonder zichzelf te blokkeren.
- Timed mutex — mutex die geprobeerd kan worden met een timeout.
- Error-checking mutex — mutex die fouten controleert, bijvoorbeeld, herhaaldelijk vergrendelen door dezelfde thread veroorzaakt een fout.
In de standaardbibliotheek van C++11 zijn de volgende types beschikbaar:
std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex
Voorbeeld van gebruik van 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();
}
De keuze van mutex-type hangt af van de taak en de vereisten voor blokkering.