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