.NET या Java में कोई थ्रेड या प्रक्रिया लॉन्च करते समय, यह चुनने का कोई तरीका है कि कौन सा प्रोसेसर या कोर लॉन्च किया गया है? साझा मामलों का मॉडल ऐसे मामलों में कैसे काम करता है?कोई एप्लिकेशन .NET या Java में एकाधिक कोर या CPU का उपयोग कैसे कर सकता है?
उत्तर
यदि आप एकाधिक धागे का उपयोग कर रहे हैं, तो ऑपरेटिंग सिस्टम स्वचालित रूप से एकाधिक कोर का उपयोग करने का ख्याल रखेगा।
ऑपरेटिंग सिस्टम बहु थ्रेडिंग का ख्याल रखता है जब वर्चुअल मशीन मूल धागे (हरे रंग के धागे के विपरीत) का उपयोग कर रही है, और आप निम्न स्तर के विवरण निर्दिष्ट नहीं कर सकते हैं, जैसे किसी निश्चित थ्रेड के लिए प्रोसेसर चुनना। यह बेहतर तरीका है क्योंकि आपके पास प्रोसेसर उपलब्ध होने की तुलना में आमतौर पर कई और धागे होते हैं, इसलिए ऑपरेटिंग सिस्टम को सभी थ्रेड को चलाने का मौका देने के लिए समय-टुकड़ा करने की आवश्यकता होती है।
कहा जा रहा है कि यदि आपके पास कोई महत्वपूर्ण कार्य है, तो आप थ्रेड प्राथमिकताओं को सेट कर सकते हैं, और थ्रेडिंग एपीआई आमतौर पर यह संभावना प्रदान करता है। उदाहरण के लिए जावा एपीआई देखें: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#setPriority(int)
पुनश्च: वहाँ कुछ पार्स इंजन में टूट गया है ... मैं सादा पाठ के रूप में ऊपर लिंक जोड़ने के लिए किया था
वहाँ जो प्रोसेसर या कोर का चयन करने के लिए एक रास्ता है यह लॉन्च किया गया है?
आप विंडोज़ को यह बताने के लिए टास्क मैनेजर का उपयोग कर सकते हैं कि आपके प्रोग्राम को किस सीपीयू पर चलने की अनुमति दी जानी चाहिए। आम तौर पर यह केवल समस्या निवारण विरासत कार्यक्रमों के लिए उपयोगी है जो बहु-थ्रेडिंग के कार्यान्वयन को तोड़ चुके हैं। इस
- भागो कार्य प्रबंधक करने के लिए,
Processes
विंडो में अपने प्रक्रिया का पता लगाएं।- राइट क्लिक करें और
Set Affinity...
- सीपीयू के बगल में स्थित चेकबॉक्स पर टिकटें, जिसे आप अपने एप्लिकेशन को चलाने की अनुमति देना चाहते हैं। विंडोज तब उस प्रक्रिया से थ्रेड को केवल उस विशेष सीपीयू के
अगर मुझे सही याद आती है, तो आपकी प्रक्रिया चलने के बाद विंडोज़ इन सेटिंग्स को याद रखेगी, लेकिन कृपया मुझे उस पर उद्धरण न दें कुछ स्वयं परीक्षण करते हैं :-)
System.Diagnostics.Process.ProcessorAffinity संपत्ति का उपयोग करके अपने प्रोग्राम लॉन्च होने के बाद भी आप प्रोग्रामिंग में .NET में ऐसा कर सकते हैं, लेकिन मुझे नहीं लगता कि यह सेटिंग्स को याद रखेगा, इसलिए हमेशा एक छोटी अवधि जिसमें आपका ऐप चलाया जाता है, जो भी सीपीयू विंडोज फिट बैठता है। मुझे नहीं पता कि जावा माफ में ऐसा कैसे करें।
नोट:
यह पूरे प्रक्रिया स्तर पर लागू होता है। यदि आप केवल CPU0 के लिए एफ़िनिटी सेट करते हैं, और फिर 50 थ्रेड लॉन्च करते हैं, तो उन सभी 50 थ्रेड CPU0 पर चलेंगे, और CPU1, 2, 3, आदि कुछ भी नहीं कर पाएंगे।
बस बिंदु को दोहराने के लिए, यह मुख्य रूप से टूटा विरासत सॉफ्टवेयर की समस्या निवारण के लिए उपयोगी है। यदि आपका सॉफ़्टवेयर टूटा नहीं गया है, तो आपको वास्तव में इनमें से किसी भी सेटिंग के साथ गड़बड़ नहीं करनी चाहिए, और विंडोज़ को अपने प्रोग्राम को चलाने के लिए सर्वश्रेष्ठ CPU (ओं) का निर्णय लेने दें, ताकि यह बाकी सिस्टम के प्रदर्शन को ध्यान में रख सके।
'साझा स्मृति' मॉडल के रूप में, यह एक ही काम करता है, लेकिन वहाँ अधिक चीजों को आसानी से गलत हो सकता है कि अपने ऐप के विपरीत सिर्फ एक एक पर timeslices करने के लिए कई CPU के पर चल रहा है कर रहे हैं।
एक आंख खोलने के उदाहरण के लिए, this ridiculousfish article about CPU's and Memory Barriers पढ़ें।
इसका उद्देश्य पावरपीसी पर ओएसएक्स विकास का लक्ष्य है, लेकिन सामान्य है कि इसे हर जगह लागू होना चाहिए। आईएमएचओ यह शीर्ष दस में से एक है 'सभी डेवलपर्स को यह पढ़ना चाहिए' लेख मैंने पढ़ा है।
मैंने इसे दो कार्यक्रमों में उपयोग किया है क्योंकि मेरा कोर 0 गड़बड़ था।
// Programmatically set process affinity
var process = System.Diagnostics.Process.GetCurrentProcess();
// Set Core 0
process.ProcessorAffinity = new IntPtr(0x0001);
या
// Set Core 1
process.ProcessorAffinity = new IntPtr(0x0002);
इस पर अधिक "Process.ProcessorAffinity Property" में।
मैं .NET ढांचे के समानांतर एक्सटेंशन पर एक नज़र डालेगा। यह अभी भी CTP में है, हालांकि इसे बहु कोर प्रोसेसर का सबसे अच्छा उपयोग करना चाहिए। .NET के लिए प्रारंभ करने का सबसे आसान स्थान parallel teams blog पर है।
जावा के लिए मुझे कोई जानकारी नहीं है।
- 1. ड्युअल-कोर CPU उपयोग
- 2. जावा बहु-थ्रेडेड प्रोग्राम एकाधिक CPU कोर का उपयोग करने में सक्षम कैसे है?
- 3. मैं .NET में cpu जानकारी कैसे प्राप्त कर सकता हूं?
- 4. क्या आपके सर्वर को 100% CPU उपयोग पर चलाना कोई समस्या है या क्या यह सिर्फ अच्छा CPU उपयोग है?
- 5. भारी mysql उपयोग CPU या मेमोरी
- 6. मेरा सी # एप्लिकेशन एकाधिक प्रोसेसर कोर का लाभ उठाने के लिए मैं क्या कर सकता हूं?
- 7. मैं Java/jtds एप्लिकेशन में SQL GO कथन का समर्थन कैसे कर सकता हूं?
- 8. एकाधिक कोर का उपयोग कर g ++ के साथ संकलन
- 9. यह जांचने के लिए कि कोई प्रोग्राम .NET का उपयोग कर रहा है या नहीं?
- 10. ड्यूल-कोर हाइपरथ्रेडिंग: क्या मुझे 4 धागे या 3 या 2 का उपयोग करना चाहिए?
- 11. क्या .NET से Java EE या RoR में जाने का यह बुद्धिमान निर्णय है?
- 12. मैं सी # उपयोग (/ प्रबंधित कोड) में * THREAD * के CPU उपयोग और/या रैम उपयोग कैसे प्राप्त कर सकता हूं?
- 13. .NET, Java जावास्क्रिप्ट कंपाइलर
- 14. कैसे जांचें कि कोई ईवेंट हैंडलर jQuery या JS का उपयोग कर मौजूद है या नहीं?
- 15. क्या मैं .NET 2.0 एप्लिकेशन में .NET 4.0 लाइब्रेरी का उपयोग कर सकता हूं?
- 16. मैं कैसे जांच सकता हूं कि प्रतिबिंब का उपयोग कर कोई विधि स्थिर है या नहीं?
- 17. .NET और Java
- 18. .NET ऐप या तो विंडोज फॉर्म या कंसोल एप्लिकेशन
- 19. क्या कोई जाली और ggplot2 भूखंडों में बहुभुज() या समकक्ष का उपयोग कर सकता है?
- 20. QThreads CPU कोर नहीं ठीक से उपयोग उपयोग किया
- 21. रुबी या पायथन वेब साइट्स को एकाधिक कोर का उपयोग करने के लिए कैसे करें?
- 22. क्या मैं जांच सकता हूं कि कोई ईमेल पता .NET का उपयोग कर मौजूद है या नहीं?
- 23. मैं कैसे बता सकता हूं कि मैं .NET का उपयोग कर x64 या x86 पर हूं या नहीं?
- 24. क्या मैं .NET 2.0 या 3.0 में एक्सटेंशन विधियों और LINQ का उपयोग कर सकता हूं?
- 25. क्या मैं विंडोज एक्सपी या 7 पर नवीनतम .NET ढांचे का उपयोग कर सकता हूं?
- 26. क्या एमएस विजुअल स्टूडियो सीपीयू पर 2 या 4 कोर का उपयोग कर परियोजनाओं को संकलित कर सकता है?
- 27. कैसे जांचें कि कोई सक्रिय निर्देशिका सर्वर ऊपर है और .NET का उपयोग कर चल रहा है या नहीं?
- 28. Jquery CPU उपयोग
- 29. मैं वीआईएम का उपयोग कैसे कर सकता हूं .Net Development
- 30. बीमार-सलाह दी या गलत उपयोग (जावा * या javax *।।) जब एक कोर लाइब्रेरी बनाना नहीं
क्या आप इसे उद्धृत कर सकते हैं? आपको यह सूचना कहां मिली। –
@ जोश ब्राउन, यह सामान्य ज्ञान की तरह लगता है। संदर्भ के लिए, Win32 API पर मौजूद कोई भी पुस्तक जो थ्रेड से संबंधित है, आपको यह बताएगी। –