Назад к вопросам
Junior — Middle
85
Объясните назначение и работу std::atomic в C++.
Компании, где спрашивали
ГК Адепт
Ответ от нейросети
sobes.tech 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> threads;
for (int i = 0; i < 10; ++i) {
threads.emplace_back(increment);
}
for (auto& t : threads) {
t.join();
}
std::cout << "Counter: " << counter << std::endl; // Ожидается 10000
}
Таким образом, std::atomic помогает писать безопасный многопоточный код без использования мьютексов для простых операций.