次の方法で共有


condition_variable::wait_for のメソッド

スレッドをブロックして、ピリオドを設定します。その場合、スレッドはブロックを解除します。

template<
   class Rep,
   class Period
>
cv_status wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time
);
template<
   class Rep,
   class Period,
   class Predicate
>
bool wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time,
   PredicatePred
);

パラメーター

  • Lck
    unique_lock<mutex> オブジェクト。

  • Rel_time
    スレッドが目覚める前に時間を指定する chrono::duration のオブジェクト。

  • Pred
    true か falseを返す式。

戻り値

最初のメソッドは Rel_time が経過すると、待機時間が終了すると cv_status::timeout を返します。それ以外の場合、メソッドは cv_status::no_timeout を返します。

2 番目のメソッドは Predの値を返します。

解説

condition_variable のオブジェクトまでの最初のメソッドはブロック notify_one の呼び出しによってシグナル状態またはピリオド Rel_time までの notify_all は、が経過する。また、疑って目覚めるできます。

2 番目のメソッドは、次のコードが実行されます。

while(!Pred())
   if(wait_for(Lck, Rel_time) == cv_status::timeout)
      return Pred();
return true;

必要条件

condition_variableヘッダー:

名前空間: std

参照

関連項目

condition_variable クラス

<condition_variable>