Ответ 1
В чем разница между аффинностью потоков и связью процессов?
Сродство к процессу является маской близости по умолчанию для всех потоков, принадлежащих этому процессу. Новые потоки начнутся с маски слияния процессов, если не указано иное. Однако сродство одного потока может быть изменено без изменения сродства процесса (и масок сродства других потоков) и что при наличии разницы между процессами и потоками нитей.
Если у меня есть две Threads, и у меня есть ядерная машина для дуэлей, можно ли запустить эти два потока параллельно на двух ядрах?
Да, это возможно, но в большинстве случаев вы действительно должны позволить операционной системе решить... скорее всего, это умнее вас.
Если я использую маску сродства к процессору, то я могу контролировать выполнение процесса на ядрах, но когда мне нужно запускать потоки на конкретном ядре, как я могу сделать эти типы ячеек конкретными?
Вам нужно будет использовать p/invoke для вызова неуправляемой функции SetThreadAffinityMask()
, а затем использовать Thread.BeginThreadAffinity()
, чтобы гарантировать, что управляемый поток останется с определенным потоком ОС. Но вы действительно не хотите этого делать!