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::mutexstd::recursive_mutexstd::timed_mutexstd::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.