2016-07-07 3 views
0

私は助けが必要です。 私は、次のコードを書いています:タイムイベント中にブレーク

std::chrono::system_clock::time_point end_time = 
    std::chrono::system_clock::now() + std::chrono::seconds(T); 

while(end_time > std::chrono::system_clock::now()){ 
    pthread_cond_wait(&dcond_var, &mutex); 
    //do work 
} 

は、だから私は、制御ループを必要とし、それが一定期間続くと私は制御ループ内の操作は、条件変数によって同期されていることが必要です。問題は、条件変数の待機が制御ループを必要なT秒よりも最後に長くすることがあることです。 システムがpthread_cond_waitで待機していても、ちょうどT秒後にwhileを中断する方法はありますか?

+0

可能な複製(http://stackoverflow.com/questions/1486833/pthread-cond-timedwait-help) –

+0

なぜ持っているのstd :: condition_variable' '使用しません'wait_until'メンバーは' chrono :: time_point'を受け取りますか? –

答えて

1

あなたはpthread_cond_timedwaitような関数か、タイムアウトを設定することができ、別のミューテックス機能を使用することができます。タイムアウトはend_time - nowです。 pthread_cond_timedwaitETIMEDOUTを返した場合は、タイムアウトが経過しているため、作業を行う必要はありません。 [pthreadの\ _cond \ _timedwait()ヘルプ]の