Junior — Middle
შეგიძლიათ ჩამოთვალოთ არსებული ურთიერთგამორიცხულობის (mutex) ტიპები?
sobes.tech AI
პასუხი AI-სგან
C/C++-да төрлө төрө mutex (ара-ара айрымы) бар, алар ишке ашыруу жана мүмкүнчүлүктөр боюнча айырмаланат:
- Гади (普通) mutex — негизги блоктоо механизми, ал ресурска эксклюзивдүү кирүүгө кепилдик берет.
- Рекурсивдүү mutex — ошол эле жипке mutexти бир нече жолу алуу мүмкүнчүлүгүн берет, өз-өзүн блоктобой.
- Timed mutex — убакыт чегинде аракет кылууга мүмкүн болгон mutex.
- Error-checking mutex — ката-жаңылуулукту текшерет, мисалы, ошол эле жиптен кайра-кайра алуу катага алып келет.
C++11 стандарттык китепканасында төмөнкү түрлөр бар:
std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex
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();
}
Mutexтин түрүн тандоо тапшырмага жана блоктоо талаптарына жараша болот.