मेरे पास एसटीएल सूची में थ्रेड पुश-बैकिंग और सूची से एक और थ्रेड पॉप-फ्रंटिंग है। क्या मुझे इस मामले में म्यूटेक्स के साथ सूची को लॉक करने की ज़रूरत है?क्या मुझे push_back pop_front परिदृश्य में म्यूटेक्स के साथ एसटीएल सूची लॉक करने की आवश्यकता है?
उत्तर
:
से अधिक थ्रेड एक ही कंटेनर का उपयोग करते हैं, और कम से कम एक धागा संभावित लिख सकते हैं, तो उपयोगकर्ता कंटेनर तक पहुँचता दौरान धागे के बीच पारस्परिक अपवर्जन सुनिश्चित करने के लिए जिम्मेदार है।
चूंकि आपके दोनों धागे सूची को संशोधित करते हैं, मुझे लगता है कि आपको इसे लॉक करना होगा।
शायद। ये ऑपरेशन परमाणु होने के लिए पर्याप्त सरल नहीं हैं, इसलिए यदि कार्यान्वयन स्पष्ट रूप से आवश्यक लॉकिंग निष्पादित करता है तो वे केवल थ्रेड-सुरक्षित होंगे।
हालांकि, सी ++ मानक यह निर्दिष्ट नहीं करता है कि इन परिचालनों को थ्रेड-सुरक्षित होना चाहिए, इसलिए यह तय करने के लिए व्यक्तिगत कार्यान्वयन पर निर्भर है। दस्तावेज़ों की जांच करें। (या हमें बताएं कि आप किस कार्यान्वयन का उपयोग कर रहे हैं)
कोई गारंटी नहीं है कि एसटीएल कार्यान्वयन थ्रेड-सुरक्षित है, और चूंकि यह प्रदर्शन लागत करता है, मुझे लगता है कि अधिकांश नहीं हैं। आपको निश्चित रूप से एक म्यूटेक्स का उपयोग करना चाहिए।
चूंकि एसटीएल पॉप/पुश ऑपरेशंस AFAIK गैर-परमाणु हैं, तो आपको एक म्यूटेक्स का उपयोग करना होगा।
अधिकांश एसटीएल कार्यान्वयन Sens कि आप ताला लगा के बिना कई उदाहरण कई धागे से एक सूची प्रकार का उपयोग कर सकते हैं में सुरक्षित धागा है। लेकिन जब आप अपनी सूची के उसी उदाहरण तक पहुंच रहे हों तो आपको लॉक करना होगा। thread safty in sgi stl
- 1. std :: सूची थ्रेडिंग push_back, front, pop_front
- 2. 'म्यूटेक्स लॉक' वास्तव में क्या करता है?
- 3. म्यूटेक्स लॉक: "अवरुद्ध" का अर्थ क्या है?
- 4. म्यूटेक्स लॉक थ्रेड्स
- 5. क्या हमें इस परिदृश्य में हाइबरनेट मैपिंग की आवश्यकता है?
- 6. रिकर्सिव लॉक (म्यूटेक्स) बनाम गैर-रिकर्सिव लॉक (म्यूटेक्स)
- 7. अनलॉक म्यूटेक्स को लॉक करना कितना कुशल है? म्यूटेक्स की कीमत क्या है?
- 8. एकाधिक थ्रेड - क्या मुझे डेटा पढ़ने पर लॉक करने की आवश्यकता है? इस कोड में
- 9. क्या मुझे AJAX के साथ ASP.NET में थ्रेड-सुरक्षा की परवाह करने की आवश्यकता है?
- 10. क्या मुझे जावा में इनपुटस्ट्रीम बंद करने की आवश्यकता है?
- 11. म्यूटेक्स और सेमफोर सी # में क्या है? जहां हमें लागू करने की आवश्यकता है?
- 12. क्या गेटर फ़ंक्शन को म्यूटेक्स की आवश्यकता होती है?
- 13. सिंगलटन पैटर्न - प्रारंभिक बाध्यकारी (स्थिर चर के साथ) म्यूटेक्स ताले की आवश्यकता को कम करता है?
- 14. लॉक और म्यूटेक्स के बीच क्या अंतर है?
- 15. क्या मुझे म्यूटेक्स का निपटान करना चाहिए?
- 16. क्या मुझे -D_REENTRANT -pthreads की आवश्यकता है?
- 17. सी ++ एसटीएल वेक्टर: push_back संदर्भ लेने
- 18. क्या मुझे कार्य का निपटान करने की आवश्यकता है?
- 19. jQuery - क्या मुझे एक वैरिएबल एन्कोड करने की आवश्यकता है?
- 20. आईएनएनओडीबी लॉक के साथ मुझे क्या गलत लगता है?
- 21. क्या मुझे संदेश बॉक्स कॉल करने की आवश्यकता है?
- 22. क्या मुझे xib संसाधनों को रिलीज़ करने की आवश्यकता है?
- 23. क्या मुझे @ सिंथेसाइज को शामिल करने की आवश्यकता है?
- 24. क्या मुझे ग्राफिक्स को कॉल करने की आवश्यकता है। प्रदर्शन()?
- 25. म्यूटेक्स की एक सूची प्राप्त करें?
- 26. क्या मुझे इशारा पहचानकर्ता जारी करने की आवश्यकता है?
- 27. क्या मुझे std :: fstream को बंद करने की आवश्यकता है?
- 28. क्या मुझे servlet outputstream को फ्लश करने की आवश्यकता है?
- 29. ऑरैकल - क्या बयानों को करने की आवश्यकता है?
- 30. push_back
SGI की एसटीएल एसटीएल एक जैसे सी में लागू ++ मानक पुस्तकालय के रूप में ही नहीं है:
अधिक जानकारियां के लिए इस पर एक नज़र डालें। उत्तरार्द्ध समवर्ती या थ्रेडिंग के बारे में कुछ भी नहीं कहता है। (यहां कई अन्य मतभेद भी हैं, हालांकि ये यहां प्रासंगिक नहीं हैं)। लेकिन संक्षेप में, आप यह नहीं मान सकते कि एसजीआई क्या कहता है stdlib पर लागू होगा – jalf