std::atomic_flag:: wait
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
(C++20)
|
||||
|
atomic_flag::wait
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
|
void
wait
(
bool
old,
std::
memory_order
order
=
std:: memory_order_seq_cst ) const noexcept ; |
(1) |
(C++20以降)
(C++26以降 constexpr) |
|
void
wait
(
bool
old,
std::
memory_order
order
=
|
(2) | (C++20以降) |
アトミックな待機操作を実行します。以下の手順を繰り返し実行するかのように動作します:
-
this
-
>
test
(
order
)
を
old
と比較する。
- これらが等しい場合、 * this が notify_one() または notify_all() によって通知されるか、スレッドが偽起床するまでブロックする。
- それ以外の場合、制御を返す。
これらの関数は、基盤となる実装が偽の解除を起こした場合でも、値が実際に変更された場合にのみ返ることが保証されています。
order が std:: memory_order_relaxed 、 std:: memory_order_consume 、 std:: memory_order_acquire または std:: memory_order_seq_cst でない場合、動作は未定義です。
目次 |
パラメータ
| old | - |
atomic_flag
オブジェクトが保持しなくなった値をチェックする値
|
| order | - | 適用するメモリ順序制約 |
注記
この形式の変更検出は、単純なポーリングや純粋なスピンロックよりも効率的な場合が多いです。
ABA問題 のため、 old から別の値へ、そして old へ戻る一時的な変更は検出されず、ブロック解除されない可能性があります。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
(C++20)
|
アトミックオブジェクトを待機している少なくとも1つのスレッドに通知する
(公開メンバ関数) |
|
(C++20)
|
アトミックオブジェクトを待機している全てのスレッドに通知する
(公開メンバ関数) |
|
(C++20)
|
atomic_flag_waitでブロックされているスレッドに通知する
(関数) |
|
(C++20)
|
atomic_flag_waitでブロックされている全てのスレッドに通知する
(関数) |