Sobes.tech
Junior — Middle

C++ da std::atomic ning maqsadi va ishlashini tushuntiring.

sobes.tech AI

AIdan javob

std::atomic C++ da'vo atomik operatsiyalarni ta'minlash uchun mo'ljallangan bo'lib, bu ko'p oqimli dasturlashda muhimdir. Atomik operatsiyalar, o'qish yoki yozish operatsiyasining to'liq va uzilmasdan amalga oshishini ta'minlaydi, bu esa raqobat sharoitlari va noto'g'ri ma'lumotlarni oldini oladi.

Masalan, bir nechta oqim bir vaqtning o'zida hisoblagichni oshirayotgan bo'lsa, oddiy o'zgaruvchidan foydalanish xatoliklarga olib kelishi mumkin. std::atomic<int> bilan inkrement operatsiyalari qo'shimcha sinxronizatsiya olmadan xavfsiz bo'ladi:

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

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

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

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; // Kutilyapti 10000
}

Shu tarzda, std::atomic oddiy operatsiyalar uchun mutexlarsiz xavfsiz ko'p oqimli kod yozishga yordam beradi.