函数

GLibatomic_int_compare_and_exchange

版本:2.4 起

声明 [源代码]

gboolean
g_atomic_int_compare_and_exchange (
  volatile gint* atomic,
  gint oldval,
  gint newval
)

描述 [源代码]

atomicoldval 进行比较,如果相等,则将 atomic 设为 newval。如果 atomic 不等于 oldval,则不会发生任何更改。

此比较和交换是原子操作。

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

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

尽管 atomic 具有 volatile 限定符,但这是一种历史遗留,传入此 atomic 的指针不应是 volatile 类型。

自 2.4 起可用

参数

atomic

类型: volatile gint*

指向 #gint 或 #guint 的指针。

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

类型: gint

要进行比较的值。

newval

类型: gint

要使用条件替换的值。

返回值

类型: gboolean

如果交换执行成功,则为 TRUE