मूल Win32 सिस्टम कॉल, विशेष रूप से SetThreadAffinityMask में टैप करके संभव है। (बेशक, मुखौटा के लिए एक अलग पैरामीटर के साथ) के अंदर प्रत्येक थ्रेड पैदा की
[DllImport("kernel32.dll")]
static extern IntPtr GetCurrentThread();
[DllImport("kernel32.dll")]
static extern IntPtr SetThreadAffinityMask(IntPtr hThread, IntPtr dwThreadAffinityMask);
और फिर उन्हें इस्तेमाल:: आप कुछ DllImports करने की आवश्यकता होगी
// set affinity of current thread to the given cpuID
SetThreadAffinityMask(GetCurrentThread(), new IntPtr(1 << (int)cpuID));
चेतावनी: नेट के बीच सीधा संबंध धागे और ओएस धागे कम से कम इस के अनुसार, इसकी गारंटी नहीं है: http://msdn.microsoft.com/en-us/library/74169f59.aspx
एक ऑपरेटिंग सिस्टम threadid एक प्रबंधित धागा करने के लिए कोई निश्चित संबंध नहीं है, क्योंकि एक यू nmanaged मेजबान प्रबंधित और अप्रबंधित धागे के बीच संबंधों को नियंत्रित कर सकते हैं। विशेष रूप से, एक परिष्कृत मेजबान उसी ऑपरेटिंग सिस्टम थ्रेड के विरुद्ध कई प्रबंधित थ्रेड शेड्यूल करने के लिए फाइबर एपीआई का उपयोग कर सकता है, या विभिन्न ऑपरेटिंग सिस्टम थ्रेड के बीच प्रबंधित थ्रेड को स्थानांतरित करने के लिए उपयोग कर सकता है।
आप ओएस शेड्यूलर/प्रेषक का दूसरा अनुमान क्यों लगाएंगे? इस तरह के अभ्यास शायद ही कभी खत्म हो जाते हैं। –
@ मार्टिन: जिज्ञासा और जिज्ञासा और जिज्ञासा – ehsan
अधिक लगता है "मेरे पास कोई सुराग नहीं है" – TomTom