zoukankan      html  css  js  c++  java
  • 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)
                //{
    
                //}
            }
    

      

  • 相关阅读:
    KCF目标跟踪方法分析与总结
    C# 事件
    委托学习(3)
    委托学习(2)
    委托学习(1)
    本地无sqlserver服务下操作数据库 之GSQL
    unity Android 打包后读取 xml 文件
    Unity 3D 调用摄像头捕获照片 录像
    Unity 进度条3D制作(3D版)
    Unity 3D 进度条制作
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/14608102.html
Copyright © 2011-2022 走看看