函数

GLibatomic_pointer_compare_and_exchange_full

自:2.74

声明 [src]

gboolean
g_atomic_pointer_compare_and_exchange_full (
  void* atomic,
  gpointer oldval,
  gpointer newval,
  void* preval
)

描述 [src]

atomicoldval 比较,如果相等,则将其设置为 newval。如果 atomic 不等于 oldval,则不进行更改。无论如何,此操作之前 atomic 的值都会存储在 preval 中。

这种比较和交换是原子执行的。

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

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

请参阅 g_atomic_pointer_compare_and_exchange()。

自 2.74 起提供

参数

atomic

类型: void*

指向 #gpointer 大小值 的指针。

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

类型: gpointer

要 with 比较的值。

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

类型: gpointer

条件 with 替换的值。

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

类型: void*

此 操作之前 atomic 的内容。

参数将由函数设置。

返回值

类型: gboolean

如果交换发生,则为 TRUE