2011-08-16 15 views
14

का उपयोग उदाहरण क्या किसी के पास कोई उदाहरण है कि बूस्ट :: स्थिति :: timed_wait का आसानी से उपयोग कैसे करें? here, here और here पर कुछ धागे हैं, लेकिन कोई भी कामकाजी उदाहरण नहीं दिखाता है। और बूस्ट डॉक्टर सामान्य रूप से काफी दुर्लभ है।बूस्ट :: स्थिति :: timed_wait

+0

यह अच्छी तरह से बढ़ावा में दस्तावेज लगता है और एक शर्त चर पर एक समय इंतजार एक बहु-क्रम वातावरण में बहुत आम है। आप किस विशेष रूप से मदद की तलाश में हैं? – Chad

+4

@ चाड: शायद मैं बस डॉक्टर को याद किया? मैंने जो पाया वह [यहां] था (http://www.boost.org/doc/libs/1_47_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref)। इसमें केवल एक गैर-समय का नमूना होता है, अर्थात् 'जबकि (! Data_ready) {cond.wait (ताला); } '। समय के लिए, यह केवल कहता है _ timed_wait की अवधि अधिभार सही ढंग से उपयोग करना मुश्किल है। अधिकांश मामलों में अधिभार लेने वाले अधिभार को प्राथमिकता दी जानी चाहिए ._ मुझे समझ में नहीं आता है कि न ही यह स्निपेट: 'जबकि (! Pred()) {if (! Timed_wait (lock, abs_time)) {वापसी 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() { ... }