Tpl
и Plinq
автоматически назначают работу потокам (на ядре / с ... {ну, если #threads> #cores
, то> 1 поток будет выполняться на том же ядре.}).
Однако, допустим, у меня есть MyMethod1(){..}
и MyMethod2(){..}
, и мне нужно убедиться (!), Что каждый из них будет работать на другом ядре! (например, интенсивные вычисления)
Ближайшее решение, которое я нашел, - это Plinq's .WithExecutionMode (ParallelExecutionMode.ForceParallelism)
Но это для другой ситуации, когда Plinq может подумать, что лучше делать это последовательно, чем параллельно. Кроме того, я не использую Plinq. У меня есть только 2 метода, которые нужно запускать на другом ядре.
Как мне это сделать ?
p.s. здесь, в SO, был ответ, который предлагал использовать TaskCreationOptions.LongRunning
, но это только намек для TaskScheduler, что он должен более агрессивно создавать потоки пула потоков. но эти потоки могут быть на одном ядре. и моя ситуация требовала, чтобы они были в другом ядре.
Спасибо.