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-ը արդյունավետորեն օգնում է կազմակերպել սպասումը և ծանուցումը թելերի միջև առանց ակտիվ հարցման։