Sobes.tech
Junior — Middle

Можеш ли да набројиш постојеће типове међусобног искључења (mutex)?

sobes.tech АИ

Одговор од АИ

Postoje različite vrste mutex (međuzavisno isključivanje) u C/C++, koje se razlikuju po implementaciji i mogućnostima:

  • Jednostavan (običan) mutex — osnovni mehanizam zaključavanja koji obezbeđuje ekskluzivan pristup resursu.
  • Rekurzivni mutex — omogućava istom thread-u da više puta zauzme mutex bez međusobnog blokiranja.
  • Timed mutex — mutex koji se može pokušati sa vremenskim ograničenjem.
  • Error-checking mutex — mutex koji proverava greške, na primer, višestruko zauzimanje od strane istog thread-a izaziva grešku.

U standardnoj biblioteci C++11 dostupni su sledeći tipovi:

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

Primer korišćenja 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();
}

Izbor tipa mutex-a zavisi od zadatka i zahteva za zaključavanje.