मैं में Boost thread documentation आज इस दिलचस्प पैरा में आए:नकली अनब्लॉक करने
void wait(boost::unique_lock<boost::mutex>& lock)
...
प्रभाव: atomically कॉल lock.unlock() और ब्लॉक वर्तमान धागा । धागा द्वारा अधिसूचित किए जाने पर अनब्लॉक करेगा-> notify_one() या यह-> notify_all(), या नकली पर कॉल करें। जब थ्रेड अनब्लॉक किया गया था ( किसी भी कारण से), लॉक लॉक.लॉक() पर रिटर्न का इंतजार करने के लिए कॉल करने से पहले पुनः प्राप्त किया गया है। लॉक को लॉक.लॉक() को लॉक करके पुनः प्राप्त किया जाता है यदि फ़ंक्शन अपवाद के साथ निकलता है।
तो मुझे जो दिलचस्पी है वह शब्द "नकली" शब्द का अर्थ है। नकली कारणों के लिए थ्रेड को अनब्लॉक क्यों किया जाएगा? इसे हल करने के लिए क्या किया जा सकता है?
ऐसा लगता है कि हम एक ही पृष्ठ ढूंढ रहे हैं, जो पूरी तरह से अप्रत्याशित नहीं है :) –
हाँ, यह आज मेरे शोध का एक सारांश है जब मैंने भयानक बग का कारण बताया कि मैं से पीड़ित था। बूस्ट प्रलेखन इस बिंदु पर स्पष्ट हो सकता है –
मुझे इंतजार और अधिसूचना के लिए पूरे सिस्टम को बढ़ावा मिला है - खासकर बूस्ट :: इंटरप्रोसेस-बहुत निराशाजनक है। अगर आप इसे क्रॉस-प्लेटफॉर्म होने और अब करने की आवश्यकता है तो मैं केवल इसका उपयोग करूंगा। –