शुरू करने के लिए प्रतीक्षा कर रहा है जब तक इसे बनाए जाने के बाद सी ++ 11 धागा शुरू नहीं किया जाता है? ऐसा लगता है कि इसके लिए कोई तरीका नहीं है, कुछ अन्य थ्रेडिंग लाइब्रेरीज़ (जैसे क्यूटी) के विपरीत जो यह जांचने के लिए एक विशेष विधि प्रदान करता है कि थ्रेड चल रहा है या नहीं।सी ++ 11 थ्रेड के लिए वास्तव में
उत्तर
भाषा परिभाषा की आवश्यकता है कि नया धागा कन्स्ट्रक्टर रिटर्न से पहले शुरू हो गया हो। औपचारिक रूप से, यह [thread.thread.constr]/5 है: "कन्स्ट्रक्टर के आमंत्रण की समाप्ति एफ की प्रतिलिपि की शुरुआत के साथ सिंक्रनाइज़ होती है।"
मुझे यकीन है कि तुम क्यों यह एक पहली जगह में शुरू करने के लिए के लिए प्रतीक्षा करने की आवश्यकता है नहीं कर रहा हूँ, लेकिन अगर आप ऐसा करेंगे, तो आप एक म्युटेक्स, एक शर्त का उपयोग करना चाहिए, और एक झंडा संकेत या शुरू कर दिया है या नहीं। एक नए बनाए गए धागे में, mutex को लॉक करें, ध्वज को «सत्य» पर सेट करें और एक सशर्त चर पर वेटर को सूचित करें। कोड में जो थ्रेड बनाता है, म्यूटेक्स को लॉक करता है, और ध्वज की जांच करता है। अगर ध्वज «सत्य» है - आपका धागा शुरू हो गया है, अगर यह «झूठा» है तो एक सशर्त चर पर प्रतीक्षा करें और एक बार जागने के बाद दोहराएं।
धन्यवाद। मैं उम्मीद कर रहा था कि एक बेहतर समाधान है जिसे मैं याद कर रहा हूं, लेकिन मुझे नहीं लगता। –
या Win32 में किसी ईवेंट की तरह एक प्रतीक्षा करने योग्य ऑब्जेक्ट का उपयोग करें, तो आपको म्यूटेक्स या ध्वज की आवश्यकता नहीं है, केवल यह स्थिति सशर्त के रूप में कार्य कर रही है। या, केवल एक बूल ध्वज का उपयोग करें, और ध्वज सेट होने तक थ्रेड लूप बनाना है। इसे लॉक करने की कोई ज़रूरत नहीं है। –
@pilcrow: और यदि नहीं? –
- 1. प्रत्येक थ्रेड को सी ++ 11
- 2. सी ++ 11
- 3. सी ++ में भुखमरी से थ्रेड को कैसे रोकें 11
- 4. सी ++ 11 में थ्रेड ऑब्जेक्ट्स की सरणी कैसे बनाएं?
- 5. मैं सी ++ 11 में थ्रेड कैसे समाप्त करूं?
- 6. सी ++ 11
- 7. सी 11
- 8. सी ++ से std :: थ्रेड के साथ समस्या 11
- 9. सीडीटी/ग्रहण सी ++ 11 थ्रेड के साथ कैसे काम करें?
- 10. बढ़ावा :: सी ++ 11 में thread_group?
- 11. सी ++ 11
- 12. सी ++ 11
- 13. सी ++ 11 इवेंट लूप बनाने के लिए 11 तरीके
- 14. सी ++ 11 थ्रेड क्लास का उपयोग कर एक अलग थ्रेड में क्लास सदस्य फ़ंक्शन निष्पादित करने के लिए कैसे करें?
- 15. सी ++ 11
- 16. सी ++ 11 std :: हैश फ़ंक्शन ऑब्जेक्ट क्लास थ्रेड सुरक्षा
- 17. सी ++ 11 प्रकार एनम मैपिंग के लिए?
- 18. सी ++ 11 कोशिश/पकड़ ब्लॉक
- 19. सी शून्य करने के लिए सी ++ 11 nullptr
- 20. सी ++ 11 में, थ्रेड का बिंदु क्या है जो "निष्पादन के धागे का प्रतिनिधित्व नहीं करता"?
- 21. सी ++ 11 यादृच्छिक संख्या जनरेटर की थ्रेड सुरक्षा
- 22. वास्तव में सी #
- 23. की नई सुरक्षा सी ++ 11
- 24. सी #: वास्तव में बटन
- 25. सी ++ में std :: थ्रेड के संदर्भ में ऑब्जेक्ट पास करना 11
- 26. सी ++ 11
- 27. सी 11
- 28. सी ++ 11
- 29. सी ++ 11
- 30. सी ++ 11
इसके लिए आपका उपयोग केस क्या है? – Casey
हां, कृपया उपयोग केस का वर्णन करें। जैसे ही वे बनाए जाते हैं, सी ++ 11 थ्रेड "प्रारंभ" होते हैं। क्या आप "जीवित/प्रगति" बनाम "समाप्त/समाप्त" की कुछ धारणा के साथ थ्रेड एपीआई का विस्तार करना चाहते हैं? क्या आप थ्रेड गतिविधि को दूसरे के साथ सिंक्रनाइज़ करना चाहते हैं? क्या आप स्पष्ट रूप से शुरू होने तक नए धागे को "रुका" होना चाहते हैं? आदि – pilcrow
"वास्तव में शुरू" का क्या अर्थ है? – Casey