Sobes.tech
Middle

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 sa std::mutex.

  • std::timed_mutex: Isti kao std::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: Kombinacija std::recursive_mutex i std::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.