2010-07-29 14 views
5

द्वारा उपयोग किया जाता है, मैं जानना चाहता हूं कि भौतिक प्रोसेसर (कोर) को पहचानना संभव है या नहीं, थ्रेड द्वारा विशिष्ट थ्रेड-आईडी के साथ प्रयोग किया जाता है?प्रोसेसर (कोर) को विशिष्ट थ्रेड

उदाहरण के लिए, मेरे पास एक बहुप्रचारित एप्लिकेशन है जिसमें 2 थ्रेड (थ्रेडिड = 10 और थ्रेडिड = 20, उदाहरण के लिए) हैं। मैं उस सिस्टम पर एप्लिकेशन चलाता हूं जिसमें दोहरी कोर प्रोसेसर (कोर 1 और कोर 2) होता है। तो, थ्रेड द्वारा थ्रेडिड = 20 के साथ कोर की संख्या जानने के लिए कैसे उपयोग किया जाता है?

पीएस विंडोज प्लेटफार्म

धन्यवाद,

डेनिस।

उत्तर

3

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

यदि आप थ्रेड-एफ़िनिटी का उपयोग कर रहे हैं, तो आप विंडोज थ्रेड-एफ़िनिटी फ़ंक्शंस (http://msdn.microsoft.com/en-us/library/ms684847%28v=VS.85%29.aspx) पर एक नज़र डाल सकते हैं।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, पैट्रिक! तो एक और सवाल सामने आया - क्या यह जानना संभव है कि विशिष्ट कोर पर एक विशिष्ट थ्रेड कितना समय चलता है? (उदाहरण के लिए कुछ धागा कोर 1 पर अपने समय के टुकड़े का 20% चलाता है और 80% समय का टुकड़ा कोर 2 पर चलता है) – DenisL

+0

ऐसा नहीं है कि मैं डेनिस से अवगत हूं। आप क्या कर सकते हैं एक थ्रेड को विशिष्ट कोरों तक सीमित करें (इसे थ्रेड-एफ़िनिटी कहा जाता है)। हो सकता है कि आप अपनी प्रक्रिया को कई धागे में विभाजित कर सकें जहां प्रत्येक थ्रेड को एक कोर को सौंपा गया हो। क्या आप समझ सकते हैं कि मूल समस्या क्या है? (आपके मूल प्रश्न की ओर अग्रसर) शायद आपकी समस्या को किसी अन्य तरीके से हल किया जा सकता है। – Patrick

+0

मुझे दो फ़ंक्शंस बनाने के लिए काम सौंपा गया है: 1. पहला फ़ंक्शन विशिष्ट थ्रेड आईडी द्वारा कुल मल्टीकोर प्रोसेसर उपयोग देता है। मैंने प्रदर्शन काउंटर फ़ंक्शंस का उपयोग करके फ़ंक्शन को कार्यान्वित किया है। 2. दूसरा फ़ंक्शन विशिष्ट थ्रेड आईडी द्वारा विशिष्ट कोर उपयोग देता है। मुझे नहीं पता कि समारोह कैसे बनाया जाए, ऐसा लगता है कि यह असंभव है। – DenisL

2

GetCurrentProcessorNumber (सर्वर 2003 और Vista के बाद से उपलब्ध) और GetCurrentProcessorNumberEx (सर्वर 2008 आर 2 और विंडोज 7 के बाद से उपलब्ध) नामक फ़ंक्शंस हैं।

अधिक संबंधित विकल्पों और विचारों (विंडोज एक्सपी सहित - मुख्य रूप से this answer describing the use of cpuid instruction) के लिए this question's answers देखें।

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

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