/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/cpp/cpp-506-11-030/main.cpp
37 строк
1 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
#include <iostream> // Пример: регистр аппаратного устройства (гипотетический) volatile int* hardware_register = reinterpret_cast<volatile int*>(0x12345678); void waitForSignal() { // Без volatile компилятор мог бы оптимизировать цикл в бесконечный, // считая, что значение не меняется while (*hardware_register == 0) { // ждём, пока регистр не станет ненулевым } std::cout << "Сигнал получен!\n"; } // Пример с обычной переменной (не рекомендуется без причины) volatile int flag = 0; void simulateExternalChange() { // Представим, что другой поток или прерывание меняет flag // (в реальности для потоков нужно std::atomic!) flag = 1; } int main() { // В реальном коде volatile используется редко: // - в embedded-системах // - при взаимодействии с hardware // - в signal handlers (ограниченно) // Для многопоточности volatile НЕ подходит! simulateExternalChange(); if (flag) { std::cout << "Флаг установлен\n"; } return 0; }