C++ стандарт китепканасында кандай типтеги муьтекстер бар?
sobes.tech AI
AIден жооп
C++ стандарт китепканасында (C++11ден бери) төмөндөгүлөр белгилүү:
-
std::mutex: Негизги, рекурсив эмес mutex. Аны ээ болгон жип аны алдын ала бошотпостон кайра алууга болбойт. Ошол эле жип аны кайра алууга аракет кылса, анык эмес жүрүм-турумга алып келет. -
std::recursive_mutex: Рекурсивдүү mutex. Бир жип аны бир нече жолу алууга мүмкүнчүлүк берет. Алып алуу жана бошотуу саны дал келиши керек, анткени mutex башка жиптер үчүн жеткиликтүү болот.std::mutexменен салыштырганда кошумча чыгымдар бар. -
std::timed_mutex:std::mutexсыяктуу, бирок убакыт чектөө менен алууга аракет кылуу мүмкүнчүлүгү бар (try_lock_for,try_lock_until). Айрым учурларда өз ара блоктоолорду алдын алуу үчүн пайдалуу. -
std::recursive_timed_mutex:std::recursive_mutexжанаstd::timed_mutexке аралаштырылган, убакыт чектөө менен рекурсивдүү алууга мүмкүндүк берет.
std::shared_mutex (C++17ден баштап) бөлүштүрүлгөн кирүү (окуу/жазуу) үчүн mutex болуп саналат, бирок ал негизги "түрлөр" mutexтерге кирбейт, бирок ресурстарга кирүүнү синхрондоштуруу үчүн колдонулат. Ал көптөгөн жиптердин бир убакта окуусуна мүмкүндүк берет, бирок бир гана жип жазуу жүргүзө алат.