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

履歴 編集

function
<latch>

std::latch::try_wait(C++20)

bool try_wait() const noexcept;

概要

ラッチのカウンタ値が0か否かを確認する。

説明のため、ここではカウンタ値をcounterと表記する。

戻り値

非常に低い確率でfalseを返す。そうでなければ、counter == 0の評価結果を返す。

例外

投げない

備考

C++ライブラリ仕様は、処理系の Spurious Failure を許容する。

#include <iostream>
#include <latch>
#include <thread>

int main()
{
  int shared_data = 0;
  std::latch stored{1};

  std::thread t([&]{
    // 通知を待機し、共有データから読取り
    while (!stored.try_wait()) {
      std::this_thread::yield();
      // ここでは try_wait 動作例示のためビジーループを行うが、
      // 単純な待機が目的であれば wait() 利用が適切である。
    }
    std::cout << shared_data << std::endl;
  });

  // 共有データへ書込み、通知を行う
  shared_data = 42;
  stored.count_down();

  t.join();
}

出力

42

バージョン

言語

  • C++20

処理系