Junior — Middle
Կարող եք նշել գոյություն ունեցող փոխադարձ բացառությունների (mutex) տեսակները?
sobes.tech AI
Պատասխան AI-ից
Կան տարբեր տեսակի mutex-ներ (միայն արտահայտում) C/C++-ում, որոնք տարբեր են իրագործման և հնարավորությունների առումով:
- Պարզ (համար) mutex — հիմնական բլոկավորման մեխանիզմը, որը ապահովում է բացառիկ մուտք դեպի ռեսուրս:
- Ռեկուրսիվ mutex — թույլ է տալիս նույն հոսքին մի քանի անգամ գրավել mutex-ը առանց փոխադարձ բլոկավորման:
- Ժամկետային mutex — mutex, որը կարելի է փորձել ժամկետով:
- Սխալների ստուգմամբ mutex — 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();
}
Մուտքագրման տեսակն ընտրում է գործառույթի և բլոկավորման պահանջների հիման վրա։