Sobes.tech
Junior — Middle

C++-da std::atomic-ın məqsədini və iş prinsipini izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

std::atomic C++-də dəyişənlərlə atomik əməliyyatların təmin edilməsi üçün nəzərdə tutulmuşdur və çox iş parçacığı ilə işləyərkən vacibdir. Atomik əməliyyatlar, dəyişənin dəyərinin oxunması və ya yazılmasının tam və fasiləsiz şəkildə baş verməsini təmin edir, bu da yarış şəraitlərinin və düzgün olmayan məlumatların qarşısını alır.

Məsələn, bir neçə iş parçacığı eyni zamanda sayğacı artırırsa, adi dəyişəndən istifadə etmək səhvlərə səbəb ola bilər. std::atomic<int> ilə artırma əməliyyatları əlavə sinxronizasiyasız təhlükəsiz olacaq:

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

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

void increment() {
    for (int i = 0; i < 1000; ++i) {
        ++counter; // atomik artırma
    }
}

int main() {
    std::vector<std::thread> threads;
    for (int i = 0; i < 10; ++i) {
        threads.emplace_back(increment);
    }
    for (auto& t : threads) {
        t.join();
    }
    std::cout << "Counter: " << counter << std::endl; // Gözlənilir 10000
}

Bu şəkildə, std::atomic sadə əməliyyatlar üçün mutex istifadə etmədən təhlükəsiz çox iş parçacığı kodu yazmağa kömək edir.