• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    macro
    <atomic>

    ロックフリープロパティ

    # define ATOMIC_BOOL_LOCK_FREE unspecified      // (1)
    # define ATOMIC_CHAR_LOCK_FREE unspecified      // (2)
    # define ATOMIC_CHAR8_T_LOCK_FREE unspecified   // (3) C++20から
    # define ATOMIC_CHAR16_T_LOCK_FREE unspecified  // (4)
    # define ATOMIC_CHAR32_T_LOCK_FREE unspecified  // (5)
    # define ATOMIC_WCHAR_T_LOCK_FREE unspecified   // (6)
    # define ATOMIC_SHORT_LOCK_FREE unspecified     // (7)
    # define ATOMIC_INT_LOCK_FREE unspecified       // (8)
    # define ATOMIC_LONG_LOCK_FREE unspecified      // (9)
    # define ATOMIC_LLONG_LOCK_FREE unspecified     // (10)
    # define ATOMIC_POINTER_LOCK_FREE unspecified   // (11)
    

    概要

    これらのマクロは、それぞれの型Tatomic<T>でロックフリーに振る舞うかを調べるために使用できる。値は未規定。 これらのマクロはそれぞれ以下の型を意味する。符号ありなしはまとめて扱われる。

    マクロ
    ATOMIC_BOOL_LOCK_FREE bool
    ATOMIC_CHAR_LOCK_FREE char
    ATOMIC_CHAR8_T_LOCK_FREE char8_t
    ATOMIC_CHAR16_T_LOCK_FREE char16_t
    ATOMIC_CHAR32_T_LOCK_FREE char32_t
    ATOMIC_WCHAR_T_LOCK_FREE wchar_t
    ATOMIC_SHORT_LOCK_FREE short
    ATOMIC_INT_LOCK_FREE int
    ATOMIC_LONG_LOCK_FREE long
    ATOMIC_LLONG_LOCK_FREE long long
    ATOMIC_POINTER_LOCK_FREE T*

    これらのマクロが置き換えられる値は以下のようになる:

    説明
    0 その型はロックフリーに振る舞うことはできない
    1 その型はロックフリーに振る舞うことがある
    2 その型は常にロックフリーに振る舞う

    #include <iostream>
    #include <atomic>
    
    int main()
    {
      std::cout << "bool      : " << ATOMIC_BOOL_LOCK_FREE << std::endl;
      std::cout << "char      : " << ATOMIC_CHAR_LOCK_FREE << std::endl;
      std::cout << "char8_t   : " << ATOMIC_CHAR8_T_LOCK_FREE << std::endl;
      std::cout << "char16_t  : " << ATOMIC_CHAR16_T_LOCK_FREE << std::endl;
      std::cout << "char32_t  : " << ATOMIC_CHAR32_T_LOCK_FREE << std::endl;
      std::cout << "wchar_t   : " << ATOMIC_WCHAR_T_LOCK_FREE << std::endl;
      std::cout << "short     : " << ATOMIC_SHORT_LOCK_FREE << std::endl;
      std::cout << "int       : " << ATOMIC_INT_LOCK_FREE << std::endl;
      std::cout << "long      : " << ATOMIC_LONG_LOCK_FREE << std::endl;
      std::cout << "long long : " << ATOMIC_LLONG_LOCK_FREE << std::endl;
      std::cout << "T*        : " << ATOMIC_POINTER_LOCK_FREE << std::endl;
    }
    

    出力例

    bool      : 2
    char      : 2
    char8_t   : 2
    char16_t  : 2
    char32_t  : 2
    wchar_t   : 2
    short     : 2
    int       : 2
    long      : 2
    long long : 2
    T*        : 2
    

    バージョン

    言語

    • C++11

    処理系

    関連項目