c++ - boost thread notify_all() and sleep() -


  बढ़ावा :: condition_variable cond; Boost :: mutex mut; बूल तैयार = झूठे; शून्य उपभोक्ता () {boost :: mutex :: scoped_lock lock (mut); जबकि (तैयार!) {Cond.wait (ताला); }} शून्य उत्पादक () {boost :: mutex :: scoped_lock lock (mut); तैयार = सच; cond.notify_all (); को बढ़ावा देने :: this_thread :: नींद (को बढ़ावा देने :: posix_time :: सेकंड (4)); }  

उपरोक्त कोड का संदर्भ लें, मैं सूचित करने के बाद वास्तव में निर्माता थ्रेड को 4 सेकंड के लिए सोता हूँ I हालांकि, उपभोक्ता धागे वास्तव में 4 सेकंड के बाद जाग रहे हैं। तो मैं इसके चारों ओर कैसे जा सकता हूं और 4 सेकंड की नींद के बावजूद नोटिस कॉल करने के तुरंत बाद उपभोक्ता धागे को जगाए। अग्रिम धन्यवाद।

इसे बढ़ावा :: म्यूट एक्स :: स्कोडा_ लॉक लॉक (मॉट) के साथ करना है ; निर्माता में नींद के बाद गुंजाइश समाप्त हो जाती है, म्यूट एक्स केवल उसके बाद जारी की जाती है।

इसके साथ प्रयास करें, अगर आप अपना स्कोडा_लाक रखना चाहते हैं।

  शून्य उत्पादक () { {Boost :: mutex :: scoped_lock ताला (mut); तैयार = सच; cond.notify_all (); } Boost :: this_thread :: sleep (boost :: posix_time :: seconds (4)); }  

Comments

Popular posts from this blog

Python SQLAlchemy:AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema' -

java - How not to audit a join table and related entities using Hibernate Envers? -

mongodb - CakePHP paginator ignoring order, but only for certain values -