Sobes.tech
Junior — Middle

Ներկայացրեք std::condition_variable-ի նշանակությունն ու աշխատանքը C++-ում։

sobes.tech AI

Պատասխան AI-ից

std::condition_variable-ը C++-ում օգտագործվում է սինխրոնիզացիայի կազմակերպման համար։ Այն թույլ է տալիս մեկ կամ մի քանի թելերի սպասել որոշակի իրադարձության առաջացմանը, միաժամանակ ազատելով mutex-ը, որպեսզի մյուս թելերը կարողանան փոխել սպասվող վիճակը:

Հիմնական կետեր՝

  • Թելը կանչում է wait-ը condition_variable-ով, փոխանցելով իր պահվող mutex-ը:
  • Սպասման ժամանակ mutex-ը ազատվում է, ինչը թույլ է տալիս մյուս թելերին մուտք գործել համատեղ օգտագործվող տվյալներ:
  • Երբ իրադարձությունը տեղի է ունենում, այլ թել է կանչում notify_one կամ notify_all, որպեսզի արթնացնի սպասող թելերին:
  • Արթնանալուց հետո, թելը նորից ձեռք է բերում mutex-ը և ստուգում պայմանը:

Օգտագործման օրինակ՝

#include <mutex>
#include <condition_variable>
#include <queue>

std::mutex mtx;
std::condition_variable cv;
std::queue<int> dataQueue;

void producer() {
    std::unique_lock<std::mutex> lock(mtx);
    dataQueue.push(42);
    cv.notify_one();
}

void consumer() {
    std::unique_lock<std::mutex> lock(mtx);
    cv.wait(lock, []{ return !dataQueue.empty(); });
    int data = dataQueue.front();
    dataQueue.pop();
    // տվյալների մշակումը
}

Այսպիսով, condition_variable-ը արդյունավետորեն օգնում է կազմակերպել սպասումը և ծանուցումը թելերի միջև առանց ակտիվ հարցման։