Sobes.tech
Junior — Middle

Оё шумо метавонед намудҳои мавҷуди муқовимати мутақобил (mutex) -ро номбар кунед?

sobes.tech AI

Ҷавоб аз AI

Дарсони намудҳои гуногуни mutex (муҳофизати мутақобил) дар C/C++ вуҷуд доранд, ки дар иҷро ва имкониятҳо фарқ мекунанд:

  • Mutex оддӣ (оддӣ) — механизмҳои асосии бастани, ки дастрасии истисноиро ба манбаъ таъмин мекунад.
  • Mutex recursive — имкон медиҳад, ки ҳамон як сӯрохи якчанд маротиба mutex-ро ба даст орад, бидуни бастани ҳамдигар.
  • Timed mutex — mutex, ки бо маҳдудияти вақт кӯшиш кардан мумкин аст.
  • Error-checking mutex — mutex, ки хатоҳоро санҷида, масалан, кӯшиши дубора ба даст овардани он аз ҷониби ҳамон сӯрохи, хато меорад.

Дар китобхонаи стандартии C++11 намудҳои зерин дастрасанд:

  • std::mutex
  • std::recursive_mutex
  • std::timed_mutex
  • std::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 вобаста ба вазифа ва талаботҳои бастан аст.