2011-08-16 14 views
14

boost :: condition :: timed_waitを最も簡単に使用する方法の例がありますか?トピックherehereおよびhereにいくつかのスレッドがありますが、実際の例はありません。そして、ブースト・ドックはいつものようにかなり疎です。boost :: condition :: timed_waitの使用例

+0

これは、boostで十分に文書化されているようであり、条件変数のタイムアウトは、マルチスレッド環境では非常に一般的です。具体的に何を探していますか? – Chad

+4

@Chad:たぶん私はその文書を見逃してしまったでしょうか?私が見つけたのは[ここ](http://www.boost.org/doc/libs/1_47_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref)でした。これには、時間指定されていないサンプル、つまり 'while(!data_ready){cond.wait(lock); } '。 timed_waitの持続時間の過負荷は正しく使用するのが難しいです。ほとんどの場合、述語を取るオーバーロードが優先されるはずです。私はそれもこのスニペットも理解しません:while(!pred()){if(!timed_wait(lock、abs_time)){return pred(); }} return true; 'pred()とは何でしょうか? – Cookie

答えて

19

実際には、完全な例hereのリンクが見つかりました。適応のビットで、これは呼び出しのようです。

boost::system_time const timeout=boost::get_system_time()+ boost::posix_time::milliseconds(35000); 
boost::mutex::scoped_lock lock(the_mutex); 
if(the_condition_variable.timed_wait(lock,timeout,&CondFulfilled)) 
{ 
    <cond fulfilled code> 
} 
else 
{ 
    <timeout code> 
} 
bool CondFulfilled() { ... } 
関連する問題