Sobes.tech
Junior — Middle

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

sobes.tech AI

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

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

Օրինակ, եթե մի քանի թելեր միաժամանակ ավելացնում են հաշվիչը, սովորական փոփոխականի օգտագործումը կարող է հանգեցնել սխալների։ std::atomic<int>-ով ավելացման գործողությունները անվտանգ կլինեն առանց լրացուցիչ սինխրոնիզացիայի՝

#include <atomic>
#include <thread>
#include <vector>
#include <iostream>

std::atomic<int> counter(0);

void increment() {
    for (int i = 0; i < 1000; ++i) {
        ++counter; // ատոմային ավելացում
    }
}

int main() {
    std::vector<std::thread> թելեր;
    for (int i = 0; i < 10; ++i) {
        թելեր.emplace_back(increment);
    }
    for (auto& t : թելեր) {
        t.join();
    }
    std::cout << "Counter: " << counter << std::endl; // Ապահովվում է 10000
}

Այսպիսով, std::atomic օգնում է գրել անվտանգ բազմատանային կոդ առանց մյուտեքսների՝ պարզ գործողությունների համար։