Advertisement

学习C语言 volatile __attribute__ const goto

阅读量:

1 volatile

在C语言编程体系中,volatile被定义为一种类型限定符,其主要作用是向编译器传递特定信息,即某类变量的数值可能受到程序之外的因素影响,进而防止编译器对该变量执行不必要的优化操作。此类特性在涉及多线程处理或直接与硬件交互的开发场景中具有关键意义。

使用方式

复制代码
    volatile int myVar;
    
    
      
    

在何种情境下应使用 volatile
硬件寄存器:当某一变量与特定的硬件寄存器相对应时。
中断服务例程:当变量在中断处理函数中被更新。
多线程环境:当变量在一个线程中被更改,而在另一个线程中被访问。
特性
编译器在每次对 volatile 变量进行操作时,都会直接读取当前的最新数值,而非依赖于缓存中的数据。
适用于必须确保获取到变量实时状态的情形,以避免因优化机制引发的数据同步问题。
示例

复制代码
    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
    
    volatile int flag = 0;
    
    void* thread_function(void* arg) {
    // 模拟某种条件下改变变量
    sleep(1)

全部评论 (0)

还没有任何评论哟~