C++ standart kitabxanasında hansı növ mutexlər mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
C++ standart kitabxanasında (C++11-dən etibarən) aşağıdakı növ mutexlər müəyyən edilmişdir:
-
std::mutex: Əsas, rekursiv olmayan mutex. Onu ələ alan iş axını, onu əvvəl azad etmədən yenidən ələ ala bilməz. Eyni iş axını tərəfindən yenidən ələ almağa cəhd qeyri-müəyyən davranışa səbəb olur. -
std::recursive_mutex: Rekursiv mutex. Eyni iş axını onun üzərində bir neçə dəfə işləyə bilər. Əldə etmə və azad etmə sayı uyğun olmalıdır ki, mutex digər iş axınları üçün əlçatan olsun.std::mutexilə müqayisədə əlavə xərclər gətirir. -
std::timed_mutex: Eynidirstd::mutexilə, lakin zaman aşımı ilə əldə etməyə imkan verir (try_lock_for,try_lock_until). Bəzi hallarda qarşılıqlı bloklanmaları qarşısını almaq üçün faydalıdır. -
std::recursive_timed_mutex:std::recursive_mutexvəstd::timed_mutex-nin birləşməsi, zaman aşımı ilə rekursiv əldə etməyə imkan verir.
std::shared_mutex (C++17-dən) paylaşılan giriş (oxuma/yazma) üçün mutexdir, lakin o, yuxarıda qeyd olunan əsas mutex tiplərinə aid deyil, lakin resurslara girişin sinxronizasiyası üçün istifadə olunur. Bir çox iş axını eyni zamanda oxumağa imkan verir, lakin yalnız bir iş axını yazmağa icazə verir.