C#多线程编程实战1.6线程优先级
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Diagnostics;
//线程优先级
namespace Recipe6
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Thread.CurrentThread.Priority);
            Console.WriteLine("Running on all cores available");
            RunThreads();
            Thread.Sleep(2);
            Console.WriteLine("Running on  a single core");
            Process.GetCurrentProcess().ProcessorAffinity = new IntPtr(1);//让操作系统将所有的线程运行在单个CPU核心上
            RunThreads();
            Console.ReadKey();
        }
        static void RunThreads()
        {
            var sample = new ThreadSample();
            var threadOne = new Thread(sample.CountNumbers);
            threadOne.Name = "ThreadOne";
            var threadTwo = new Thread(sample.CountNumbers);
            threadTwo.Name = "ThreadTwo";
            threadOne.Priority = ThreadPriority.Highest;
            threadTwo.Priority = ThreadPriority.Lowest;
            threadOne.Start();
            threadTwo.Start();
            Thread.Sleep(2);
            sample.Stop();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Recipe6
{
    public class ThreadSample
    {
        private bool _isStopped = false;
        public void Stop()
        {
            _isStopped = true;
        }
        public void CountNumbers()
        {
            long counter = 0;
            while (!_isStopped)
            {
                counter++;
            }
            Console.WriteLine("CurrentThread.Name: {0}  CurrentThread.Priority:{1}  counter:{2} ", Thread.CurrentThread.Name, Thread.CurrentThread.Priority, counter);
        }
    }
}
                    
                
                
            
        
浙公网安备 33010602011771号