सूत्रण नई सी ++ मानक (C++ 0x) के लिए एसटीएल में सूत्रण सुविधाओं के आगमन के साथ, यह बेहतर होगा कि सूत्रण POSIX उपयोग कर रहा है या यहां तक कि विंडोज एसटीएल सूत्रण उपयोग करने के लिए सूत्रण मौजूदा कोड को बदलने के लिए ?C++ 0x
C++ 0x
उत्तर
आप हमेशा अपने दांव को हेज कर सकते हैं ... अपना खुद का सरल थ्रेडिंग एपीआई लिखें जो आपके आवेदन को करने की ज़रूरत के लिए पर्याप्त रूप से पर्याप्त है, और केवल अपने थ्रेडिंग एपीआई को लक्षित करने के लिए अपना कोड बदलें। फिर आप विंडोज या पॉज़िक्स या एसटीएल या जो कुछ भी इस्तेमाल कर अपने कस्टम थ्रेडिंग एपीआई के आंतरिक को कार्यान्वित कर सकते हैं, और जब भी आपको अपने पूरे कोडबेस को स्पर्श किए बिना कार्यान्वयन को बदलना पड़ता है।
इसे उस तरह से करने से, आप एसटीएल कार्यान्वयन के साथ शुरू कर सकता है, और फिर अगर यह है कि जैसे पता चला है विंडोज़ का उपयोग करने में एक मुश्किल-से-हल समस्या है, आप केवल my_threading_api.cpp (#ifdef WIN32 के अंदर) के अंदर एक वैकल्पिक विंडोज-एपीआई कार्यान्वयन शामिल कर सकते हैं और आप व्यवसाय में वापस आ जाएंगे।
एक बड़ा सौदा आप कितना पोर्टेबिलिटी के बारे में परवाह पर निर्भर करेगा, और भी बहुत कैसे आप सुविधाओं का लाभ ले जा रहे हैं अपनी मूल एपीआई प्रदान कर सकता है कि मानक पुस्तकालय नहीं करता है। मानक लाइब्रेरी थ्रेडिंग पर्याप्त रूप से पॉज़िक्स के समान ही है (कम से कम ऑफहैंड) मैं पॉज़िक्स के साथ रहकर आपको जितना अधिक लाभ प्राप्त नहीं कर सकता (और समानता के कारण, मानक लाइब्रेरी का उपयोग करने के लिए पोर्टिंग आमतौर पर बहुत आसान होना चाहिए)।
विंडोज थ्रेडिंग इतना अलग है कि आप मानक लाइब्रेरी का उपयोग करने के लिए बंदरगाह के लिए गैर-तुच्छ हो जाएंगे, और यहां तक कि सर्वश्रेष्ठ पोर्टिंग पर भी संभवतः गैर-तुच्छ होगा।
कोई कह रहा है कि यह पहले C++ 0x पुस्तकालय सुविधाओं आमतौर पर समर्थन कर रहे कब तक तो इस सवाल का जवाब अच्छी तरह से एक विशेष संकलक आप होने के लिए चाहते हो सकता है से बंधा कैसे पर निर्भर कर सकते हो जाएगा, नहीं है। तुम भी एक रूपरेखा या लाइब्रेरी कि देशी के शीर्ष या C++ 0x पुस्तकालय कार्यान्वयन पर काम करता है, Boost Threads या Intel Threading Building Blocks के रूप में इस तरह के विचार करने और है कि पुस्तकालय यह C++ 0x सुविधाओं या मंच का उपयोग कर रहा है कि क्या के विवरण प्रबंधित करने देने के लिए चाहते हो सकता है एपीआई।
जब तक आपको वास्तव में इसकी आवश्यकता न हो तब तक न बदलें। मुझे लगता है कि आपका मौजूदा कोड अच्छी तरह से काम कर रहा है।
यह निर्भर करता है।
सी ++ 0x थ्रेडिंग अभी तक व्यापक रूप से समर्थित नहीं है (मुझे लगता है कि जीसीसी इसे लागू करता है, लेकिन एमएसवीसी नहीं करता है, और मुझे नहीं पता कि वे उस समर्थन को जोड़ने की योजना बना रहे हैं, लेकिन मुझे संदेह हो सकता है कि वे मानते हैं यह एक कम प्राथमिकता सुविधा)
अपने कोड काम करता है यह है के रूप में है, यह क्यों बदलते हैं? नए सी ++ अनुप्रयोगों के लिए, और संकलक समर्थन मानते हुए, मैं सी ++ 0x धागे के साथ जाऊंगा, क्योंकि वे मानक हैं, और यह Win32 या POSIX धागे की तुलना में एक बहुत अच्छा एपीआई है।
- 1. C++ 0x सुविधाओं
- 2. बूस्ट लैम्ब्डा :: _ C++ 0x
- 3. C++ 0x प्रदर्शन में सुधार
- 4. namelookup: C++ 0x मसौदा n3290
- 5. C++ 0x गैर copyable आइटम
- 6. समझना C++ 0x लैम्ब्डा कैप्चर
- 7. अतुल्यकालिक समारोह कॉल C++ 0x
- 8. काल्पनिक, पूर्व-C++ 0x अवधारणाओं सवाल
- 9. C++ 0x decltype और गुंजाइश संकल्प ऑपरेटर
- 10. C++ 0x std :: एक विधि तर्क
- 11. स्पष्ट ओवरराइड और अंतिम C++ 0x
- 12. C++ 0x स्थिर initializations और धागा सुरक्षा
- 13. सी ++ 0x
- 14. C++ 0x साथ autoconf का उपयोग कैसे करें सुविधाएँ
- 15. Android NDK में C++ 0x थ्रेड का उपयोग कैसे करें?
- 16. std :: C++ 0x lambda अभिव्यक्ति का उपयोग करके परिवर्तन
- 17. mingw और C++ 0x के साथ _stricmp मौजूद नहीं है?
- 18. कैसे एक fstream (C++ 0x) वापस जाने के लिए
- 19. क्या वे copy_if को C++ 0x में जोड़ रहे हैं?
- 20. enable_shared_from_this (C++ 0x): मैं गलत क्या कर रहा हूं?
- 21. C++ 0x स्मृति मॉडल और सट्टा लोड/स्टोर
- 22. जी ++ अभ्यस्त संकलन एसटीडी = C++ 0x Snow Leopard के तहत
- 23. उपचार वेक्टर <int*> कॉपी किए बिना (C++ 0x)
- 24. C++ 0x में wchar_t का भाग्य क्या है?
- 25. सी ++ 0x
- 26. सी ++ 0x
- 27. सी ++ 0x
- 28. सी ++ 0x
- 29. सी ++ 0x - कब?
- 30. सी ++ 0x क्यूटी निर्माता
यह हमने किया है। हमने पीओएसईक्स, विंडोज़ और कुछ अन्य आरटीओएस के उपयोग के लिए विभिन्न बैकएंड कार्यान्वयन के साथ अपनी "ओएस एब्स्ट्रक्शन लेयर" बनाई है। हमारे पास सेमफोर, म्यूटेक्स, टाइमर इत्यादि के लिए कक्षाएं भी हैं। यह एक बहुत ही उपयोगी बात है। –
+1: बहुत ही रोचक समाधान! – Alerty