C++ 0x

2010-06-04 12 views
8

सूत्रण नई सी ++ मानक (C++ 0x) के लिए एसटीएल में सूत्रण सुविधाओं के आगमन के साथ, यह बेहतर होगा कि सूत्रण POSIX उपयोग कर रहा है या यहां तक ​​कि विंडोज एसटीएल सूत्रण उपयोग करने के लिए सूत्रण मौजूदा कोड को बदलने के लिए ?C++ 0x

उत्तर

5

आप हमेशा अपने दांव को हेज कर सकते हैं ... अपना खुद का सरल थ्रेडिंग एपीआई लिखें जो आपके आवेदन को करने की ज़रूरत के लिए पर्याप्त रूप से पर्याप्त है, और केवल अपने थ्रेडिंग एपीआई को लक्षित करने के लिए अपना कोड बदलें। फिर आप विंडोज या पॉज़िक्स या एसटीएल या जो कुछ भी इस्तेमाल कर अपने कस्टम थ्रेडिंग एपीआई के आंतरिक को कार्यान्वित कर सकते हैं, और जब भी आपको अपने पूरे कोडबेस को स्पर्श किए बिना कार्यान्वयन को बदलना पड़ता है।

इसे उस तरह से करने से, आप एसटीएल कार्यान्वयन के साथ शुरू कर सकता है, और फिर अगर यह है कि जैसे पता चला है विंडोज़ का उपयोग करने में एक मुश्किल-से-हल समस्या है, आप केवल my_threading_api.cpp (#ifdef WIN32 के अंदर) के अंदर एक वैकल्पिक विंडोज-एपीआई कार्यान्वयन शामिल कर सकते हैं और आप व्यवसाय में वापस आ जाएंगे।

+0

यह हमने किया है। हमने पीओएसईक्स, विंडोज़ और कुछ अन्य आरटीओएस के उपयोग के लिए विभिन्न बैकएंड कार्यान्वयन के साथ अपनी "ओएस एब्स्ट्रक्शन लेयर" बनाई है। हमारे पास सेमफोर, म्यूटेक्स, टाइमर इत्यादि के लिए कक्षाएं भी हैं। यह एक बहुत ही उपयोगी बात है। –

+0

+1: बहुत ही रोचक समाधान! – Alerty

4

एक बड़ा सौदा आप कितना पोर्टेबिलिटी के बारे में परवाह पर निर्भर करेगा, और भी बहुत कैसे आप सुविधाओं का लाभ ले जा रहे हैं अपनी मूल एपीआई प्रदान कर सकता है कि मानक पुस्तकालय नहीं करता है। मानक लाइब्रेरी थ्रेडिंग पर्याप्त रूप से पॉज़िक्स के समान ही है (कम से कम ऑफहैंड) मैं पॉज़िक्स के साथ रहकर आपको जितना अधिक लाभ प्राप्त नहीं कर सकता (और समानता के कारण, मानक लाइब्रेरी का उपयोग करने के लिए पोर्टिंग आमतौर पर बहुत आसान होना चाहिए)।

विंडोज थ्रेडिंग इतना अलग है कि आप मानक लाइब्रेरी का उपयोग करने के लिए बंदरगाह के लिए गैर-तुच्छ हो जाएंगे, और यहां तक ​​कि सर्वश्रेष्ठ पोर्टिंग पर भी संभवतः गैर-तुच्छ होगा।

2

कोई कह रहा है कि यह पहले C++ 0x पुस्तकालय सुविधाओं आमतौर पर समर्थन कर रहे कब तक तो इस सवाल का जवाब अच्छी तरह से एक विशेष संकलक आप होने के लिए चाहते हो सकता है से बंधा कैसे पर निर्भर कर सकते हो जाएगा, नहीं है। तुम भी एक रूपरेखा या लाइब्रेरी कि देशी के शीर्ष या C++ 0x पुस्तकालय कार्यान्वयन पर काम करता है, Boost Threads या Intel Threading Building Blocks के रूप में इस तरह के विचार करने और है कि पुस्तकालय यह C++ 0x सुविधाओं या मंच का उपयोग कर रहा है कि क्या के विवरण प्रबंधित करने देने के लिए चाहते हो सकता है एपीआई।

3

जब तक आपको वास्तव में इसकी आवश्यकता न हो तब तक न बदलें। मुझे लगता है कि आपका मौजूदा कोड अच्छी तरह से काम कर रहा है।

2

यह निर्भर करता है।

सी ++ 0x थ्रेडिंग अभी तक व्यापक रूप से समर्थित नहीं है (मुझे लगता है कि जीसीसी इसे लागू करता है, लेकिन एमएसवीसी नहीं करता है, और मुझे नहीं पता कि वे उस समर्थन को जोड़ने की योजना बना रहे हैं, लेकिन मुझे संदेह हो सकता है कि वे मानते हैं यह एक कम प्राथमिकता सुविधा)

अपने कोड काम करता है यह है के रूप में है, यह क्यों बदलते हैं? नए सी ++ अनुप्रयोगों के लिए, और संकलक समर्थन मानते हुए, मैं सी ++ 0x धागे के साथ जाऊंगा, क्योंकि वे मानक हैं, और यह Win32 या POSIX धागे की तुलना में एक बहुत अच्छा एपीआई है।

संबंधित मुद्दे