Как определить, на каком процессоре работает поток?

Есть ли способ определить, на каком процессоре работает данный поток? Желательно в C #, но C ++ подойдет.

Классы .NET Process и ProcessThread не предоставляют эту информацию.

ETA разъяснения:

Мы разрабатываем серверное приложение, которое обрабатывает многоадресные потоки http и запускает несколько видеокодеров. Это выполняется в системе с 12 физическими ядрами, что приводит к 24 логическим процессорам (гиперпоточность). С помощью TaskManager и ProcessExplorer мы убедились, что порожденные нами процессы равномерно распределяются по логическим процессорам. Тем не менее, мы наблюдаем большую (ядро?) Активность только на одном процессоре, который мешает поглощать необычное количество процессорного времени. Мы пытаемся определить, какой процесс (ы) / поток (ы) работает на этом конкретном процессоре. Кажется, что ни TaskManager, ни ProcessExplorer не предоставляют такую информацию. Если да, объясните, как получить такую информацию.

В противном случае, мы собираемся написать собственный инструмент для получения этой информации. И это то, что нам нужно помочь.

Мы знаем, как изменить сходство потоков (и мы знаем, что нет никакой гарантии, что поток останется связанным с любым ЦП, хотя в данном конкретном случае потоки, потребляющие ЦП, остаются связанными только с одним ЦП), но в Для этого нам нужно сначала определить, КАКОЙ процесс / поток должен быть перемещен. Это единственная цель этого вопроса.

Я надеюсь, что это помогает прояснить проблему.

Ответы на вопрос(3)

Ваш ответ на вопрос