C++ standarta kutubxonasida qanday mutex turlari mavjud?
sobes.tech AI
AIdan javob
C++ standart kutubxonasida (C++11 dan boshlab) quyidagi turdagi mutexlar belgilangan:
-
std::mutex: Asosiy, rekursiv bo'lmagan mutex. Uni egallagan oqim uni yana egallay olmaydi, uni avval bo'shatmasdan. Uni qayta egallashga urinish noma'lum xatti-harakatlarga olib keladi. -
std::recursive_mutex: Rekursiv mutex. Bir oqim uni bir necha marta egallashiga imkon beradi. Egallash va bo'shatish soni mos kelishi kerak, shunda mutex boshqa oqimlar uchun mavjud bo'ladi.std::mutexga nisbatan qo'shimcha xarajatlar keltiradi. -
std::timed_mutex:std::mutexbilan bir xil, ammo vaqt bilan egallashga urinish imkoniyatini beradi (try_lock_for,try_lock_until). Ba'zi hollarda o'zaro bloklanishni oldini olish uchun qulay. -
std::recursive_timed_mutex:std::recursive_mutexvastd::timed_mutexning kombinatsiyasi bo'lib, vaqt bilan rekursiv egallash imkonini beradi.
std::shared_mutex (C++17 dan boshlab) bo'linadigan kirish (o'qish/yozish) uchun mutex bo'lib, u yuqorida sanab o'tilgan asosiy mutex turlariga o'xshash "turlar" ga kirmaydi, ammo resurslarga kirishni sinxronlashtirish uchun ishlatiladi. U ko'p oqimga bir vaqtning o'zida o'qishga ruxsat beradi, lekin faqat bitta oqim yozishi mumkin.