Sobes.tech
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::mutex
  • std::recursive_mutex
  • std::timed_mutex
  • std::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.