Junior — Middle
Môžeš uviesť existujúce typy vzájomného vylúčenia (mutex)?
sobes.tech AI
Odpoveď od AI
Existujú rôzne typy mutexov (mutual exclusion) v C/C++, ktoré sa líšia implementáciou a možnosťami:
- Jednoduchý (bežný) mutex — základný mechanizmus blokovania, ktorý zabezpečuje výlučný prístup ku zdroju.
- Rekurzívny mutex — umožňuje rovnakému vláknu získať mutex viackrát bez vzájomného zablokovania.
- Timed mutex — mutex, ktorý možno skúsiť získať s časovým limitom.
- Error-checking mutex — mutex, ktorý kontroluje chyby, napríklad opakované získanie rovnakým vláknom spôsobí chybu.
V štandardnej knižnici C++11 sú dostupné tieto typy:
std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex
Príklad použitia 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ýber typu mutexu závisí od úlohy a požiadaviek na zámok.