Namespaces
Variants

ATOMIC_*_LOCK_FREE

From cppreference.net
定義済みヘッダー <stdatomic.h>
#define ATOMIC_BOOL_LOCK_FREE     /* implementation-defined */

#define ATOMIC_CHAR_LOCK_FREE     /* implementation-defined */
#define ATOMIC_CHAR16_T_LOCK_FREE /* implementation-defined */
#define ATOMIC_CHAR32_T_LOCK_FREE /* implementation-defined */
#define ATOMIC_WCHAR_T_LOCK_FREE  /* implementation-defined */
#define ATOMIC_SHORT_LOCK_FREE    /* implementation-defined */
#define ATOMIC_INT_LOCK_FREE      /* implementation-defined */
#define ATOMIC_LONG_LOCK_FREE     /* implementation-defined */
#define ATOMIC_LLONG_LOCK_FREE    /* implementation-defined */

#define ATOMIC_POINTER_LOCK_FREE  /* implementation-defined */
(C11以降)
#define ATOMIC_CHAR8_T_LOCK_FREE  /* implementation-defined */
(C23以降)

対応する プリプロセッサ定数式 に展開され、 0 1 または 2 のいずれかに評価されます。これらは対応する アトミック型 (符号付きと符号なしの両方)のロックフリープロパティを示します。

説明
0 アトミック型がロックフリーでない場合
1 アトミック型が場合によってロックフリーである場合
2 アトミック型が常にロックフリーである場合

参考文献

  • C17規格 (ISO/IEC 9899:2018):
  • 7.17.1/3 atomic lock-freeマクロ (p: 200)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.17.1/3 atomic lock-free macros (p: 273)