Sobes.tech
Junior — Middle

Meg tudnád nevezni a létező kölcsönös kizárás (mutex) típusokat?

sobes.tech MI

Válasz az MI-től

A C/C++-ban különböző típusú mutexek (kölcsönös kizárás) léteznek, amelyek megvalósításukban és képességeikben különböznek:

  • Egyszerű (normál) mutex — alap mechanizmus a kizárólagos hozzáférés biztosítására egy erőforráshoz.
  • Rekurzív mutex — lehetővé teszi ugyanazon szál számára, hogy többször is megszerezze a mutexet anélkül, hogy blokkolná saját magát.
  • Időzített mutex — olyan mutex, amely próbálkozhat időkorláttal.
  • Hibák ellenőrzésével rendelkező mutex — ellenőrzi a hibákat, például, ha ugyanazon szál többször próbálja megszerezni, hibát eredményez.

A C++11 szabványkönyvtárban a következő típusok érhetők el:

  • std::mutex
  • std::recursive_mutex
  • std::timed_mutex
  • std::recursive_timed_mutex

A std::recursive_mutex használatának példája:

#include <mutex>

std::recursive_mutex mtx;

void recursive_function(int count) {
    mtx.lock();
    if (count > 0) {
        recursive_function(count - 1);
    }
    mtx.unlock();
}

A mutex típusának kiválasztása a feladattól és a zárolási követelményektől függ.