如果有两个线程访问全局变量,那么许多教程都说使变量volatile变为阻止编译器将变量缓存在寄存器中,从而无法正确更新.但是,访问共享变量的两个线程是通过互斥锁来调用保护的东西不是吗?但是在这种情况下,在线程锁定和释放互斥锁之间,代码处于一个关键部分,只有那个线程可以访问变量,在这种情况下变量不需要是volatile?
那么多线程程序中volatile的用途/目的是什么?
根据标题.我可以std::atomic<>在信号处理程序中使用还是sig_atomic_t提供其他编译器功能?
atomic ×2
c++ ×2
assembly ×1
c ×1
concurrency ×1
gcc ×1
signals ×1
system-calls ×1
volatile ×1
x86 ×1