2013-08-05 4 views
1
namespace HelloWorld 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Thread t = new Thread(() => WriteY("11")); 
      t.Start(); 
      t.IsBackground = true; 
      Thread.CurrentThread.Priority = ThreadPriority.Highest; 
      for (int i = 0; i < 1000; i++) Console.Write("x"); 
      System.Console.ReadLine(); 
     } 
     static void WriteY(string ss) 
     { 
      for (int i = 0; i < 1000; i++) 
       Console.Write(ss); 
      System.Console.ReadLine(); 
     } 
    } 
} 

Привет, я думаю, что поток «x» должен завершиться первым, так как его приоритет является самым высоким. но в результате они все еще переключаются.Почему приоритет нити не влияет?

+5

Приоритет не должен иметь ничего общего с тем, что заканчивается первым – Sayse

+3

[Приоритеты темы злы] (http://www.codinghorror.com/blog/2006/08/thread-priorities-are-evil.html). –

+0

Также см. Http://stackoverflow.com/a/8683938/11683 – GSerg

ответ

2

Прежде всего, независимо от приоритетов, вы не можете делать какие-либо предположения о том, какие параллельные задания заканчиваются сначала.

Кроме того, прочитайте эту статью Джеффа Этвуда о том, почему использование приоритетов потоков - плохая идея.

http://www.codinghorror.com/blog/2006/08/thread-priorities-are-evil.html

В случае ТЛ, др только одна цитата: Независимо от того, как блестящий программист не может быть, я могу практически гарантировать, что вы не сможете перехитрить программистов, писавших планировщик в вашем операционная система.

0

Если у вас на вашем ПК имеется более одного CPU (-core), то это «нормально», так как Thread 1 работает на CPU/core 1 и Thread 2 на CPU/core 2.
Я думаю если вы повторно используете то же самое с большим количеством потоков, то доступными ядрами или запуском, например Prime95 в фоновом режиме, чтобы использовать 100% вашего процессора, он должен иметь значение, но в случае < = потоки тогда (доступны) CPU/corse планировщик будет запускать каждый поток на своем собственном ядре и (если они делают ~ то же самое), они закончат то же время ...

Смежные вопросы