2011-04-26 11 views
5

C# में ThreadPool सेटअप करने का उचित तरीका क्या होगा?सी # थ्रेड गिनती

ThreadPool.SetMaxThreads(int workerThreads, int completionPortThreads) 

मैं प्रोसेसर कोर की संख्या के बराबर करने के धागे की संख्या चाहते हैं, लेकिन मैं async आई/ओ धागे (दूसरा पैरामीटर) के बारे में यकीन नहीं है।

क्या मैं बस ThreadPool.SetMaxThreads(Environment.ProcessorCount, 0) जैसे कुछ कह सकता हूं ताकि ओ/एस दूसरे पैरामीटर को ही घटा दे?

+2

आप ऐसा क्यों करना चाहते हैं? थ्रेड पूल * पहले से ही * आपके मशीन के आधार पर आपके आकार को अनुकूलित करता है - मुझे नहीं लगता कि आप बेहतर कर सकते हैं। – BrokenGlass

+0

@ ब्रोकनग्लस सहमत हुए। फिर भी, अगर, उदाहरण के लिए, मुझे अधिकतम थ्रेड नंबर को 'कुछ! = कोर गिनती' में बदलना है, तो मुझे दूसरे पैरामीटर के साथ क्या करना चाहिए? –

उत्तर

6

अधिकतम समापन पोर्ट थ्रेड का उपयोग Socket.Begin* या Socket.*Async और अन्य आईओ-संबंधित कार्यों जैसे असीमित कार्यों द्वारा किया जाता है।

int maxWorkerThreads; 
int maxCompletionThreads; 

// Get the maximum number of completion threads 
ThreadPool.GetMaxThreads(out maxWorkerThreads, out maxCompletionThreads); 

// Set the new max worker threads, but keep the old max completion threads 
ThreadPool.SetMaxThreads(someDifferentValue, maxCompletionThreads); 

मुझे लगता है कि पूरा होने के धागे की अधिकतम संख्या है डिफ़ॉल्ट रूप से: मुझे लगता है कि अगर आप कार्यकर्ता धागे बदलने के लिए, तो आप सिर्फ जांच होनी चाहिए पूरा होने के धागे की वर्तमान अधिकतम संख्या मूल्यों को बदलने से पहले क्या है की सिफारिश करेंगे 1000, लेकिन यह मशीन से मशीन में भिन्न हो सकता है। बस सुरक्षित होने के लिए, GetMaxThreads फ़ंक्शन से प्राप्त मान का उपयोग करें।

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