Распределение потоков по ядрам - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Возник вопрос, как сделать так чтобы 3 созданных мною потока выполнялись на одном ядре, мне нужно это чтобы при изменении приоритетов каждого из них я видел разницу в их работе, а то так я ее не наблюдаю.. Код приводить смысла нет(он довольно таки большой и тут не к месту). Просто прошу обьяснить/сбросить ссылку(нормальную)/написать функцию или метод который бы делал так чтобы три мною созданных потока или массив потоков выполнялся на одном ядре.Заранее спасибо

Решение задачи: «Распределение потоков по ядрам»

textual
Листинг программы
void SetThreadAffinity(int mask)
{
    int threadId = GetCurrentThreadId();
    var currentThread = Process.GetCurrentProcess()
        .Threads
        .OfType<ProcessThread>()
        .Where(t => t.Id == threadId)
        .Single();
    currentThread.ProcessorAffinity = new IntPtr(mask);
}
 
[DllImport("kernel32.dll")]
static extern int GetCurrentThreadId();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5