Namespaces
Variants

ATOMIC_*_LOCK_FREE

From cppreference.net
Определено в заголовочном файле <stdatomic.h>
#define ATOMIC_BOOL_LOCK_FREE /* определяется реализацией */

#define ATOMIC_CHAR_LOCK_FREE /* определяется реализацией */
#define ATOMIC_CHAR16_T_LOCK_FREE /* определяется реализацией */
#define ATOMIC_CHAR32_T_LOCK_FREE /* определяется реализацией */
#define ATOMIC_WCHAR_T_LOCK_FREE /* определяется реализацией */
#define ATOMIC_SHORT_LOCK_FREE /* определяется реализацией */
#define ATOMIC_INT_LOCK_FREE /* определяется реализацией */
#define ATOMIC_LONG_LOCK_FREE /* определяется реализацией */
#define ATOMIC_LLONG_LOCK_FREE /* определяется реализацией */

#define ATOMIC_POINTER_LOCK_FREE /* определяется реализацией */
(начиная с C11)
#define ATOMIC_CHAR8_T_LOCK_FREE /* определяется реализацией */
(начиная с C23)

Раскрывается в препроцессорные константные выражения , которые вычисляются в 0 , 1 или 2 , указывающие на свойство отсутствия блокировок соответствующих атомарных типов (как знаковых, так и беззнаковых).

Значение Объяснение
0 Атомарный тип никогда не является lock-free
1 Атомарный тип иногда является lock-free
2 Атомарный тип всегда является lock-free

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.17.1/3 макросы атомарной lock-free реализации (стр: 200)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.17.1/3 макросы атомарной lock-free реализации (стр: 273)