Почему не все ядра загружены и, как сделать так, чтобы отдельный поток подавался на отдельное ядро? - C#

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

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

Создал 12 потоков, а как-то не все ядра загружены. Процессор i7-3930K.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
 
namespace ConsoleApplication1Thread
{
    class Program
    {
        static void Main(string[] args)
        {
            ThreadProc();
 
            Thread t2 = new Thread(ThreadProc);
            t2.Start();
 
            Thread t3 = new Thread(ThreadProc);
            t3.Start();
 
            Thread t4 = new Thread(ThreadProc);
            t4.Start();
 
            Thread t5 = new Thread(ThreadProc);
            t5.Start();
 
            Thread t6 = new Thread(ThreadProc);
            t6.Start();

            Thread t7 = new Thread(ThreadProc);
            t7.Start();
 
            Thread t8 = new Thread(ThreadProc);
            t8.Start();

            Thread t9 = new Thread(ThreadProc);
            t9.Start();

            Thread t10 = new Thread(ThreadProc);
            t10.Start();

            Thread t11 = new Thread(ThreadProc);
            t11.Start();
 
            Thread t12 = new Thread(ThreadProc);
            t12.Start();
        }
 
        static void ThreadProc()
        {
            while (true)
                Console.WriteLine("Поток");
        }
    }
}
Вопрос. Почему не все ядра загружены и как сделать так, чтобы отдельный поток подавался на отдельное ядро?

Решение задачи: «Почему не все ядра загружены и, как сделать так, чтобы отдельный поток подавался на отдельное ядро?»

textual
Листинг программы
[SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlThread)]
public class MyUtility
{
    [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlThread)]
    public void PerformTask()
    {
        // Code that does not have thread affinity goes here. 
        //
        Thread.BeginThreadAffinity();
        // 
        // Code that has thread affinity goes here. 
        //
        Thread.EndThreadAffinity();
        // 
        // More code that does not have thread affinity.
    }
}

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


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

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

10   голосов , оценка 3.6 из 5
Похожие ответы