Изменить приоритет потока - PullRequest
3 голосов
/ 05 января 2012

Я пытаюсь изменить приоритет потока, но не могу заставить его работать.Я сделал кнопку, которая переключает приоритет между низким и высоким, и когда я проверяю это в списке вакансий, приоритет меняется.Но использование процессора не изменилось.Интересно, только потому, что я не использую полную мощность процессора или как это может быть.

Я не спрашиваю, хорошая ли это идея.Я спрашиваю, как это сделать.

Вот как я меняю приоритет.Это код класса:

    private Thread tr;

    public MainWindow()
    {
        InitializeComponent();

        tr = new Thread(new ThreadStart(infiniteLoop));
        tr.Start();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        if (Process.GetCurrentProcess().PriorityClass == ProcessPriorityClass.High)
        {
            Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.Idle;
            tr.Priority = ThreadPriority.Lowest;
            description.Text = "Idle";
        }

        else
        {
            Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
            tr.Priority = ThreadPriority.Highest;
            description.Text = "High";
        }
    }

    private void infiniteLoop()
    {
        while (true)
        {
        }
    }

1 Ответ

4 голосов
/ 05 января 2012

Это не работает так, как я думаю, вы ожидаете, то есть процесс с низким приоритетом каким-то образом сокращен до x% времени ЦП.

Однопоточный процесс с любым приоритетом может потреблять 100%процессорного времени на одном ядре.

Когда у вас есть два процесса, один с более высоким приоритетом, чем другой, которые оба будут потреблять 100% процессорного времени самостоятельно, при одновременном выполнении один с более высоким приоритетом получит всепроцессорного времени (при условии, что одно ядро) и процесс с более низким приоритетом вообще не будут прогрессировать.

Приоритет процесса просто используется для определения порядка, в котором планировщик «раздает» процессорвременные интервалы для процессов.

...