Как мне найти процессор, на котором работает мой поток в C #? - PullRequest
4 голосов
/ 26 февраля 2010

Как мне найти процессор, на котором работает мой поток в C #?

Ответы [ 3 ]

4 голосов
/ 26 февраля 2010

Это не обязательно константа - поток может быть запланирован на разные ядра в течение всего срока службы. Вы можете установить маски сходства, чтобы связать конкретный поток с конкретным процессором, если хотите. См. API документы для Thread.BeginThreadAffinity для получения дополнительной информации о том, что можно сделать в .Net.

1 голос
/ 26 февраля 2010

Я не уверен, что ты можешь. Вы можете получить маску сходства процесса (GetProcessAffinityMask) и установить такую ​​же (SetProcessAffinityMask). Вы также можете установить маску сходства потоков, но, насколько я понимаю, при этом вы ограничиваете запуск потока на одном из процессоров, для которого установлена ​​маска сходства.

Если вы углубляетесь в конкретные потоки, работающие на определенных ядрах, вы, вероятно, захотите установить маску сходства процессов, чтобы определить набор ядер, на которых может выполняться код, и потоки в вашем процессе будут перемещаться среди выбранных ядер.

1 голос
/ 26 февраля 2010

ИМХО возможно, что поток .NET не связан ни с одним из собственных потоков. > Среда выполнения NET может перемещать потоки .NET между различными собственными потоками и процессорами в любое время.

...