Es posible tocando en las llamadas al sistema nativo Win32, específicamente SetThreadAffinityMask. Usted tendrá que hacer algunas DllImports:
[DllImport("kernel32.dll")]
static extern IntPtr GetCurrentThread();
[DllImport("kernel32.dll")]
static extern IntPtr SetThreadAffinityMask(IntPtr hThread, IntPtr dwThreadAffinityMask);
Y luego usarlos en el interior de cada uno dio lugar a rosca (con un parámetro diferente para la máscara, por supuesto):
// set affinity of current thread to the given cpuID
SetThreadAffinityMask(GetCurrentThread(), new IntPtr(1 << (int)cpuID));
Advertencia: correlación directa entre .NET hilos y hebras de SO no está garantizada, al menos de acuerdo a lo siguiente: http://msdn.microsoft.com/en-us/library/74169f59.aspx
un sistema operativo ThreadId no tiene ninguna relación fija con un logrado hilo, debido a que una u el host nmanaged puede controlar la relación entre hilos administrados y no administrados. Específicamente, un host sofisticado puede usar la API de Fiber para programar muchos hilos administrados contra el mismo hilo del sistema operativo , o para mover un hilo administrado entre diferentes subprocesos del sistema operativo .
¿Por qué querría adivinar el programador/despachador del sistema operativo? Tales ejercicios raramente terminan bien. –
@Martin: curiosidad, curiosidad y curiosidad – ehsan
Suena más como "no tengo ni idea de lo que sé" – TomTom