一起学习交流~

c/c++细节知识点 05volatile的作用

c++面试准备 laomuji 3个月前 (07-07) 160次浏览 已收录 0个评论

目录

作用

/*
volatile关键字用于修饰变量,告诉编译器不要优化这个变量,这个变量可能被其它(比如线程,操作系统等)修改
使用volatile每次都会从内存中取出值,(否则可能会从cpu中取出)
指针和const都可以用volatile修饰
*/

例子

#include<iostream>
#include<thread>
using namespace std;

int num5_1 = 0;
volatile std::atomic_int num5_2 = 0;
bool isStop = true;
void addNum5_1() {
    while (isStop) { this_thread::yield(); };
    for (int i = 0; i < 10101; i++) {
        num5_1++;
        num5_2++;
    }
}
int main() {
    for (int i = 0; i < 5; i++) {
        std::thread(addNum5_1).detach();
    }
    isStop = false;
    this_thread::sleep_for(chrono::seconds(2));
    cout << num5_1 << endl;
    cout << num5_2 << endl;
    return 0;
}

喜欢 (0)
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论