函数

GLibatomic_pointer_compare_and_exchange

自:2.4

声明 [src]

gboolean
g_atomic_pointer_compare_and_exchange (
  void* atomic,
  gpointer oldval,
  gpointer newval
)

说明 [src]

比较 atomic 是否与 oldval 相等,如果相等,则将其设置为 newval。如果 atomicoldval 不相等,则不进行任何更改。

此比较和交换是原子性完成的。

将此操作视为 { if (*atomic == oldval) { *atomic = newval; return TRUE; } else return FALSE; } 的原子版本。

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

虽然 atomic 具有 volatile 限定符,但这只是一个历史遗留,传递给它的指针不应为 volatile

自 2.4 起可用

参数

atomic

类型: void*

指向 #gpointer 大小的值的指针。

数据归函数调用方所有。
oldval

类型: gpointer

要与之比较的值。

参数可以为 NULL
数据归函数调用方所有。
newval

类型: gpointer

表示条件替换的值。

参数可以为 NULL
数据归函数调用方所有。

返回值

类型: gboolean

发生了交换时为 TRUE