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