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

履歴 編集

function
<atomic>

std::atomic_flag_test_explicit(C++20)

namespace std {
  bool atomic_flag_test_explicit(const volatile atomic_flag* object,
                                 memory_order order) noexcept;  // (1) C++20
  bool atomic_flag_test_explicit(const atomic_flag* object,
                                 memory_order order) noexcept;  // (2) C++20
}

概要

現在の値をbool値として取得する。

要件

orderが以下のメモリオーダーではないこと:

効果

order値によってメモリに影響がある

戻り値

アトミックに読み込まれた*thisが指している値を返す

例外

投げない

#include <iostream>
#include <atomic>

int main()
{
  std::cout << std::boolalpha;

  std::atomic_flag x = ATOMIC_FLAG_INIT;
  std::cout << std::atomic_flag_test(&x, std::memory_order::acquire) << std::endl;

  std::atomic_flag_test_and_set(&x, std::memory_order::release);
  std::cout << std::atomic_flag_test(&x, std::memory_order::acquire) << std::endl;
}

出力

false
true

バージョン

言語

  • C++20

処理系

  • Clang: (9.0時点で実装なし)
  • GCC: (9.2時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)

参照