函数

GLibatomic_pointer_xor

自:2.30 起

声明 [src]

guintptr
g_atomic_pointer_xor (
  void* atomic,
  gsize val
)

说明 [src]

对此操作的理解方式是原子版本的 { tmp = *atomic; *atomic ^= val; return tmp; }

执行原子位“异或”的 atomicval,将结果存储回 atomic 中。

这一调用作为完整的编译器和硬件内存屏障。

虽然 atomicvolatile 限定符,但这可是历史遗留产物,传递给它的指针不应该是 volatile

在 GLib 2.80 中,返回值类型从 #gsize 更改为了 #guintptr 以增加对使用 128 位指针的平台的支持。这不会影响现有代码。

自 2.30 起提供

参数

atomic

类型: void*

指向 #gpointer 大小值的指针。

数据归函数的调用者所有。
val

类型: gsize

进行“异或”运算的值。

返回值

类型: guintptr

该操作之前的 atomic 值(无符号)。