Junior — Middle
Můžeš vyjmenovat existující typy vzájemných vyloučení (mutex)?
sobes.tech AI
Odpověď od AI
V jazyce C/C++ existují různé typy mutexů (mutual exclusion), které se liší implementací a funkcemi:
- Jednoduchý (běžný) mutex — základní mechanismus zámku, který zajišťuje exkluzivní přístup ke zdroji.
- Rekurzivní mutex — umožňuje stejnému vláknu získat mutex vícekrát bez vzájemného zablokování.
- Timed mutex — mutex, který lze zkusit získat s časovým limitem.
- Error-checking mutex — mutex, který kontroluje chyby, například opakované získání stejným vláknem způsobí chybu.
V standardní knihovně C++11 jsou dostupné tyto typy:
std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex
Příklad použití 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();
}
Výběr typu mutexu závisí na úkolu a požadavcích na zámek.