?
? ????? PHP ??? ???? ??? ?? ??
在頭文件<stdatomic.h>中定義 | ||
---|---|---|
_Bool atomic_is_lock_free(const volatile A * obj); | (自C11以來(lái)) |
確定類(lèi)型的所有對(duì)象A
(被指向的對(duì)象的類(lèi)型)的原子操作是否obj
都是無(wú)鎖的。在任何給定的程序執(zhí)行中,調(diào)用的結(jié)果atomic_is_lock_free
對(duì)于相同類(lèi)型的所有指針是相同的。
這是為所有原子對(duì)象類(lèi)型定義的通用函數(shù)A
。該參數(shù)是指向易失性原子類(lèi)型的指針,以接受非易失性和易失性(例如內(nèi)存映射I/O)原子變量的地址。
obj | - | 指向要檢查的原子對(duì)象的指針 |
---|
true
如果對(duì)類(lèi)型的所有對(duì)象的操作A
都是無(wú)鎖的,否則false
。
正如已發(fā)布的C11所指出的那樣,該函數(shù)是按對(duì)象而不是按類(lèi)型的。這由DR 465糾正。
#include <stdio.h>#include <stdatomic.h> _Atomic struct A { int a[100]; } a;_Atomic struct B { int x, y; } b;int main(void){ printf("_Atomic struct A is lock free? %s\n", atomic_is_lock_free(&a) ? "true" : "false"); printf("_Atomic struct B is lock free? %s\n", atomic_is_lock_free(&b) ? "true" : "false");}
可能的輸出:
_Atomic struct A is lock free? false_Atomic struct B is lock free? true
C11標(biāo)準(zhǔn)(ISO/IEC 9899:2011):
7.17.5.1 atomic_is_lock_free通用函數(shù)(p: 280)
ATOMIC_BOOL_LOCK_FREEATOMIC_CHAR_LOCK_FREEATOMIC_CHAR16_T_LOCK_FREEATOMIC_CHAR32_T_LOCK_FREEATOMIC_WCHAR_T_LOCK_FREEATOMIC_SHORT_LOCK_FREEATOMIC_INT_LOCK_FREEATOMIC_LONG_LOCK_FREEATOMIC_LLONG_LOCK_FREEATOMIC_POINTER_LOCK_FREE (C11) | indicates that the given atomic type is lock-free (macro constant) |
---|
| 針對(duì)atomic_is_lock_free |的C ++文檔