यह 2 बातें अपने कोड बेस पर निर्भर करता है और यह के भीतर अपनी जगह। मुख्य प्रश्न हैं- 1) "क्या आप कोड के आधार पर धागे, थ्रेडपूल और नियंत्रण प्राइमेटिव (ताले, घटनाएं इत्यादि) हैं और 2)" क्या आप पुन: प्रयोज्य पुस्तकालयों या सामान्य ऐप्स विकसित कर रहे हैं? "
यदि आपकी लाइब्रेरी में थ्रेड टूल हैं (लगभग हमेशा पीटीएचड के कुछ स्वाद पर बनाए जाते हैं), तो उनका उपयोग करें। यदि आप लाइब्रेरी डेवलपर हैं, तो उन्हें बनाने के लिए समय (यदि संभव हो) खर्च करें।यह इसके लायक है- आप ओपनएमपी की तुलना में अधिक जुर्माना, उन्नत थ्रेडिंग को एक साथ रख सकते हैं।
इसके विपरीत, यदि आप समय के लिए दबाए जाते हैं या केवल तीसरे पक्ष के औजारों से कुछ ऐप्स या कुछ विकसित करते हैं, तो OpenMP का उपयोग करें। आप इसे कुछ मैक्रोज़ में लपेट सकते हैं और आपको आवश्यक मूल समांतरता प्राप्त कर सकते हैं।
सामान्य रूप से, ओपनएमपी बुनियादी बहु-थ्रेडिंग के लिए पर्याप्त है। एक बार जब आप इस बिंदु पर पहुंचने लगते हैं कि आप सिस्टम को अत्यधिक एसिंक कोड बनाने पर सीधे संसाधनों का प्रबंधन कर रहे हैं, तो इसका आसानी से उपयोग लाभ प्रदर्शन और इंटरफ़ेस समस्याओं से भीड़ हो जाता है।
स्रोत
2013-08-07 18:46:39
पुन: आपका संपादन (कर्नेल- या उपयोगकर्ता-स्तर?) - यह कार्यान्वयन पर निर्भर करता है! एक एपीआई बस यही है - एक ** इंटरफ़ेस **। ओपनएमपी कार्यान्वयन नहीं है - [लेकिन ये कुछ कार्यान्वयन हैं] (http://en.wikipedia.org/wiki/OpenMP#Implementations)। (इस विकिपीडिया लेख में भी कुछ जानकारी है [http://en.wikipedia.org/wiki/Native_POSIX_Thread_Library))। –
असल में, यदि आप ओपनएमपी में जो चाहते हैं वह कर सकते हैं, तो आपको इसे ओपनएमपी में करना चाहिए। –
ओपनएमपी का प्रयोग उन लूपों के लिए किया जाना चाहिए जिन्हें सभी कोरों पर गणना की जानी चाहिए। PThread भी ऐसा कर सकता है लेकिन यह बहुत काम है और इसे बनाए रखना बहुत मुश्किल है, आप आमतौर पर पीटीएचड का उपयोग करते हैं यदि आपको एक अलग प्रक्रिया शुरू करने की आवश्यकता है जो मुख्य धागे को अवरुद्ध नहीं करना चाहिए। उदाहरण के लिए: आपके पास एक सर्वर है, क्लाइंट कनेक्ट हैं और सर्वर के साथ कनेक्शन रखना है और इसके साथ बात करना है, आप क्लाइंट प्रति थ्रेड बनाते हैं और क्लाइंट के साथ मुख्य थ्रेड को अवरुद्ध किए बिना उस थ्रेड में काम करते हैं। ऐसा लगता है कि आप एक नया एप्लीकेशन बनाते हैं और इसे मुख्य एप्लिकेशन को परेशान किए बिना ऑपरेटिंग सिस्टम पर चलने देते हैं। –