C# - как запускать несколько задач на определенных нескольких ядрах/процессорах одновременно/синхронно
Всем Привет,
У меня есть несколько задач, и мне нужно запустить их на определенных нескольких ядрах или процессорах
одновременно. Например, если у меня есть две разные задачи или только одна задача, но я выполню ее дважды
я хочу запустить эти две задачи на определенных ядрах или процессорах одновременно, как будет работать task1
на processor1 и task2 будут выполняться на processor2 одновременно. я знаю, как запустить каждый конкретный
процессор, но я не знаю, как запустить их одновременно. Я пытался использовать многопоточность
затем параллельная библиотека задач для одновременного выполнения различных задач на определенных процессорах но я
провалившийся. в приведенном ниже коде я пытался использовать многопоточность, но она не работает или я могу использовать задачу
параллельная библиотека???
ПОЖАЛУЙСТА, ПОМОГИТЕ!!!!!
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Diagnostics; namespace ConsoleApplication14 { class Program { public static double DumbCountSqr(int dumnum) { Random random = new Random(); int randomNumber = random.Next(0, 10); double result = 0; for (int i = 1; i < 10000; i++) { for (int j = 1; j < 10000; j++) { result += random.Next(0, 10) * Math.Sqrt(i) * Math.Sqrt(j) + Math.Abs(Math.Sqrt(i)); } } return result; } public static void Main() { Thread t = new Thread(new ThreadStart(Go)); t.Start(); for (int i = 0; i < 1; i++) { Process Proc = Process.GetCurrentProcess(); long AffinityMask = (long)Proc.ProcessorAffinity; AffinityMask = 0x0004;//processor 3 Proc.ProcessorAffinity = (IntPtr)AffinityMask; var result1 = DumbCountSqr(i); Console.WriteLine("result1 = " + result1); } } public static void Go() { for (int i = 0; i < 1; i++) { Process Proc = Process.GetCurrentProcess(); long AffinityMask = (long)Proc.ProcessorAffinity; AffinityMask = 0x0001;//processor 1 Proc.ProcessorAffinity = (IntPtr)AffinityMask; var result2 = DumbCountSqr(i); Console.WriteLine("result2 = " + result2); } } } }