Thread.Sleep會讓出cpu,證明如下


using System;
using System.Threading;

namespace Test
{
    class Program
    {
        public static void CallToChildThread()
        {
            Console.WriteLine("ThreadId:" + Thread.CurrentThread.ManagedThreadId);
            //Thread.Sleep(200000); 

            while (true)
            {

            }
        }

        public static void CreatThread()
        {
            ThreadStart childref = new ThreadStart(CallToChildThread);
            Thread childThread = new Thread(childref);
            childThread.Start();
        }

        public static void Run()
        {
            for (int i = 0; i < 100000; i++)
            {
                Console.WriteLine("Run:" + i);
            }
        }

        public static void CreatRun()
        {
            ThreadStart childref = new ThreadStart(Run);
            Thread childThread = new Thread(childref);
            childThread.Start();
        }

        static void Main(string[] args)
        {
            for (int i = 0; i < 50; i++)
            {
                CreatThread();
            }

            for (int i = 0; i < 10; i++)
            {
                CreatRun();
            }



            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
    }
}

  

一:CallToChildThread死循環時,新創建線程很慢,重點是沒有RunData,執行效果如下圖:
public static void CallToChildThread()
        {
            Console.WriteLine("ThreadId:" + Thread.CurrentThread.ManagedThreadId);
            //Thread.Sleep(200000); 

            while (true)
            {

            }
        }

 

二.CallToChildThread   Thread.Sleep(200000);時,瞬間完成新創建線程,RunData立馬執行,且打印值,,執行效果如下圖:

public static void CallToChildThread()
        {
            Console.WriteLine("ThreadId:" + Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(200000);

            //while (true)
            //{

            //}
        }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM