Sobes.tech
Junior — Middle

Explica la finalidad y el funcionamiento de std::atomic en C++.

sobes.tech AI

Respuesta de la IA

std::atomic en C++ está diseñado para garantizar operaciones atómicas con variables, lo cual es importante al trabajar con concurrencia. Las operaciones atómicas garantizan que la lectura o escritura del valor de una variable ocurra en su totalidad, sin interrupciones, previniendo condiciones de carrera y datos incorrectos.

Por ejemplo, si varios hilos incrementan un contador simultáneamente, usar una variable normal puede llevar a errores. Con std::atomic<int>, las operaciones de incremento serán seguras sin necesidad de sincronización 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; // Se espera 10000
}

De esta forma, std::atomic ayuda a escribir código multihilo seguro sin usar mutexes para operaciones simples.