功能

GLibatomic_int_compare_and_exchange_full

since: 2.74

声明 [src]

gboolean
g_atomic_int_compare_and_exchange_full (
  gint* atomic,
  gint oldval,
  gint newval,
  gint* preval
)

描述 [src]

atomicoldval 进行比较,如果相等,则将其设置为 newval。如果 atomic 不等于 oldval,那么不会发生变化。在任何情况下,此操作之前 atomic 的值都存储在 preval 中。

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

可以将此操作看作是 { *preval = *atomic; if (*atomic == oldval) { *atomic = newval; return TRUE; } else return FALSE; } 的原子版本。

此调用充当完全的编译器和硬件内存屏障。

另请参阅 g_atomic_int_compare_and_exchange()。

自 2.74 起可用

参数

atomic

类型:  gint*

指向 #gint 或 #guint 的指针。

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

类型:  gint

要进行比较的值。

newval

类型:  gint

有条件地替换为的值。

preval

类型:  gint*

此操作之前 atomic 的内容。

此参数将由函数设置。

返回值

类型:  gboolean

如果交换发生,则为 TRUE