2013-08-05 3 views
5

क्या एक सी # कार्य एक कोर पर चलता है?क्या एक सी # कार्य एक कोर पर चलता है?

मेरे पास एक प्रोजेक्ट है जहां मुझे यह तय करने की आवश्यकता है कि कितने कार्य बनाना है। मुझे जितना कंप्यूटर ले सकता है उतना बनाने की जरूरत है। क्या प्रोसेसर, कोर, या लॉजिकल प्रोसेसर की संख्या है, मैं तीन विकल्पों के बीच उलझन में हूं।

+0

जैसा कि मैं इसे समझता हूं, एक प्रबंधित धागा भी अपने मूल धागे पर आवश्यक नहीं है। तो मुझे लगता है कि आपके प्रश्न का उत्तर "न तो" है। – ken

+1

एक कार्य एक थ्रेड की तरह बहुत काम करता है जिसके लिए यह कोर चल रहा है (मुझे विश्वास है)। अपने प्रश्नों के उत्तर देने के लिए यह निर्भर करता है कि आपके कार्य क्या कर रहे हैं, वे कौन से संसाधन सीपीयू/आईओ/मेमोरी/डिस्क का उपयोग कर रहे हैं ...? – TheKingDave

+0

एक कार्य एक कोर से दूसरे तक हो सकता है। आपको वास्तव में क्या पूछना चाहिए "क्या एक कार्य एक से अधिक कोर पर चलता है?"। सं। –

उत्तर

3

एक कार्य थ्रेड पर निष्पादित करता है। ओएस शेड्यूल कोर के लिए थ्रेड। कोर एक तार्किक अवधारणा है और भौतिक सीपीयू चिप्स से अलग हैं।

Environment.ProcessorCount कार्य बनाएं, या पीआईएलक्यू या Parallel जैसे उच्च स्तर के टीपीएल संरचनाओं में से एक का बेहतर उपयोग करें।

0

यदि आप कार्य पुस्तकालय (पीटीएल) का उपयोग करते हैं, तो आपको इसके बारे में चिंता करने की आवश्यकता नहीं होगी। आप इसके बारे में अधिक पढ़ सकते हैं here। संक्षेप में:

टीपीएल उपलब्ध सभी प्रोसेसर का सबसे कुशलता से उपयोग करने के लिए गतिशील रूप से समेकन की डिग्री स्केल करता है। इसके अलावा, TPL काम के विभाजन ...

हम टास्क के चारों ओर एक आवरण बना लिया है इस प्रकार संभालता है:

public static class PeriodicTaskFactory 
{ 
    public static Task Start(Action action, int intervalInMilliseconds = -1, int delayInMilliseconds = 0, int duration = -1, int maxIterations = -1, bool synchronous = false, CancellationToken cancelToken = null, TaskCreationOptions periodicTaskCreationOptions = TaskCreationOptions.None); 
} 

और फिर हम यह इतना की तरह कहते हैं। इस मामले में, हम केवल एक ही काम करना चाहते हैं जो पहले निष्पादन में 1 सेकंड की देरी के साथ हर 1 मिनट में एक विधि को कॉल कर रहा है।

 PeriodicTaskFactory.Start(() => 
     { 
      CdClMappingLogic.Invoke(); 
     }, 60000, 1000, -1, -1, true) 
+0

क्या आप अधिक विशिष्ट हो सकते हैं? हाँ मैं वास्तव में उस दस्तावेज़ को पढ़ रहा हूँ। – user2381422

+0

मूल रूप से वह यहां क्या बचा रहा है यह है कि आप टीपीएल में काम को परिभाषित करते हैं और ढांचे को बनाने के लिए कितने धागे ... आदि काम करते हैं। आप बस परिभाषित करते हैं कि प्रत्येक धागा क्या करना है। – TheKingDave

+0

@ user2381422 - हाँ, जैसा कि द किंगिंग डेव ने कहा था, इसका उपयोग करना बहुत आसान है। आप परिभाषित करते हैं कि आप कौन सा काम करना चाहते हैं, इसे किसी कार्य में लपेटें और .NET FW निर्णय लेता है कि सीपीयू और अन्य संसाधनों के आधार पर काम के उस ब्लॉक को कैसे निष्पादित करना सर्वोत्तम है। –

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