वीएस -2010 में पेश किए गए समवर्ती रनटाइम में, एक समवर्ती_क्यू कक्षा है। इसमें एक गैर अवरुद्ध try_pop() फ़ंक्शन है।
इंटेल थ्रेड बिल्डिंग ब्लॉक (टीबीबी) में समान, संस्करण 2.1 से 2.2 तक जाने पर अवरुद्ध पॉप() कॉल हटा दिया गया था।समवर्ती_क्यू गैर-अवरोध क्यों है?
मुझे आश्चर्य है कि अवरोधक कॉल के साथ समस्या क्या है। इसे टीबीबी से क्यों हटा दिया गया था? और क्यों कोई अवरुद्ध concurrent_queue नहीं है?
मैं ऐसी परिस्थिति में हूं जहां मुझे अवरुद्ध समवर्ती कतार की आवश्यकता है, और मुझे व्यस्त प्रतीक्षा नहीं चाहिए। खुद को एक कतार लिखने के अलावा, क्या समवर्ती रनटाइम में एक और संभावना है?
, आप * किसी भी तुल्यकालन पुरातन खुद लिखने के लिए जरूरत के बिना लागू कर सकते हैं *" क्लासिक निर्माता-उपभोक्त "कोड के बारे में दो लाइनों में TBB का उपयोग कर,। (उपभोक्ता '(सत्य) उपभोग करता है (Q.pop()); और निर्माता' जबकि (सत्य) Q.push (उत्पादन()) करता है; '।) अवरुद्ध 'पॉप' के बिना, वही समस्या कम से कम दोगुनी कोड की आवश्यकता होती है: अर्थात्, एक अतिरिक्त शर्त चर प्रति कतार बहीखाता। लेकिन जैसा कि पक्सडीब्लो कहते हैं, 'tbb :: concurrent_bounded_queue' अवरुद्ध' पॉप' कार्यक्षमता प्रदान करना जारी रखता है, और मूल रूप से 'concurrent_queue' के लिए ड्रॉप-इन प्रतिस्थापन है। – Quuxplusone