Ugrás a tartalomhoz

std::lock guard

A Wikiszótárból, a nyitott szótárból


Főnév

std::lock guard (tsz. std::lock guards)

  1. (informatika) A std::lock_guard C++-ban egy RAII (Resource Acquisition Is Initialization) alapú osztály, amit mutexek automatikus kezelésére használnak. A célja, hogy egy adott kritikus szakaszban zároljon egy mutexet, majd automatikusan feloldja azt, amikor a scope (hatókör) véget ér.

Magyar magyarázat:

#include <iostream>
#include <mutex>
#include <thread>

std::mutex mtx;

void szal_fuggveny() {
    std::lock_guard<std::mutex> zar(mtx);  // A mutex itt lezárásra kerül

    std::cout << "Kritikus szakaszban vagyunk" << std::endl;

    // Amikor a függvény véget ér (vagy kivétel történik),
    // a lock_guard automatikusan feloldja a mutexet
}

Mit csinál a std::lock_guard?

  • Belépéskor: lezárja a megadott std::mutex objektumot.
  • Kilépéskor: automatikusan feloldja (unlock) a mutexet, amikor a lock_guard objektum megszűnik.

Ez nagyon hasznos, mert: - Megakadályozza, hogy elfelejtsük feloldani a mutexet. - Megvédi a kódot attól, hogy kivétel dobása esetén zárolva maradjon a mutex.

Magyar név szerint:

  • std::mutex → „kölcsönös kizárás” vagy „mutex”
  • std::lock_guard → „zárőr” vagy „védőzár”

Szemléletesen úgy képzelheted el, mintha a lock_guard lenne a kulcs, amit bedugsz a zárba (mutex), és amikor eldobod (kikerül a hatókörből), automatikusan kihúzza a kulcsot is.

Szeretnéd, hogy írjak egy magyar kommentekkel ellátott példaprogramot is hozzá?