gpt4 book ai didi

linux - Linux内核中的原子操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:52 25 4
gpt4 key购买 nike

typedef struct { int counter; } atomic_t;

atomic_t 是什么意思?编译如何对待它?从历史上看,计数器已被声明为 volatile,这意味着它是一个 CPU 寄存器,对吗?

最佳答案

它被声明为这样的结构的原因是,使用它的程序员被迫(温和地提醒,而不是)使用访问函数来操作它。例如,aval = 27 将无法编译。 aval++ 也不会。

volatile 关键字一直与 CPU 寄存器相反:它表示必须直接从内存读取和写入内存的值。

如果 counter 在历史上是 volatile 这是错误的,因为 volatile 本身从来都不够好以确保正确的原子更新。我相信当前的原子操纵器函数通过 volatile 指针结合与适当的写屏障函数使用转换,并且machine code for some operations that the compiler cannot do properly .

关于linux - Linux内核中的原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21533435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com