Koje vrste mutexa postoje u standardnoj biblioteci C++?
sobes.tech АИ
Одговор од АИ
U standardnoj biblioteci C++ (od C++11) definisani su sledeći tipovi muteksa:
-
std::mutex: Osnovni, nerekurzivni mutex. Nit koja ga poseduje ne može ga ponovo preuzeti bez prethodnog oslobađanja. Pokušaj ponovnog preuzimanja od strane iste niti dovodi do neodređenog ponašanja. -
std::recursive_mutex: Rekurzivni mutex. Omogućava istoj niti da ga preuzme više puta. Broj preuzimanja i oslobađanja mora biti isti da bi mutex bio dostupan drugim nitima. Povećava troškove u poređenju sastd::mutex. -
std::timed_mutex: Isti kaostd::mutex, ali sa mogućnošću pokušaja preuzimanja sa vremenskim ograničenjem (try_lock_for,try_lock_until). Koristan za sprečavanje međusobnih blokada u određenim slučajevima. -
std::recursive_timed_mutex: Kombinacijastd::recursive_mutexistd::timed_mutex, omogućavajući rekurzivno preuzimanje sa vremenskim ograničenjem.
std::shared_mutex (od C++17) je mutex sa deljenim pristupom (čitanje/pisanje), ali ne pripada osnovnim "tipovima" mutexa u istom smislu kao gore navedeni, iako se koristi za sinhronizaciju pristupa resursima. Omogućava mnogim nitima da čitaju istovremeno, ali samo jednoj niti da piše.