Sobes.tech
Junior — Middle

Explique a finalidade e o funcionamento de std::atomic em C++.

sobes.tech IA

Resposta da IA

O std::atomic em C++ destina-se a garantir operações atômicas com variáveis, o que é importante ao trabalhar com concorrência. Operações atômicas garantem que a leitura ou escrita do valor de uma variável ocorra na sua totalidade, sem interrupções, prevenindo condições de corrida e dados incorretos.

Por exemplo, se vários threads aumentam um contador simultaneamente, usar uma variável normal pode levar a erros. Com std::atomic<int>, as operações de incremento serão seguras sem necessidade de sincronização adicional:

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

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

void increment() {
    for (int i = 0; i < 1000; ++i) {
        ++counter; // incremento atômico
    }
}

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

Assim, std::atomic ajuda a escrever código multithread seguro sem usar mutexes para operações simples.