zoukankan      html  css  js  c++  java
  • Unity3d多线程

    (一)多线程的创建

    Thread t = new Thread(new ThreadStart(Go)); 

    Thread t1 = new Thread(Go);

    两种创建方式没有区别;

    (二)多线程的状态控制和优先级

    多线程有4种状态:Start()开始;Abort()终止;Join()阻塞;Sleep()休眠;

    有5种优先级:从高到底依次为:Highest,AboveNormal ,Normal ,BelowNormal ,Lowest;

    线程的默认优先级为Normal;


    多线程实例

    /*
     * 
     * 游戏多线程
     * */
    using UnityEngine;
    using System.Threading;
    
    
    public class BaseThread{
    	
    	private static BaseThread instance;
    
        object obj = new object();
        int num = 0;
        private BaseThread()
    	{
    
            /*测试线程优先级 
            /*/
            Thread th1 = new Thread(Th_test1);              //创建一个线程
            Thread th2 = new Thread(Th_test2);
            Thread th3 = new Thread(Th_test3);
            th1.Start();
            th2.Start();
            th3.Start();
            //学习优先级
            th1.Priority = System.Threading.ThreadPriority.Highest;         //优先级最高
            th2.Priority = System.Threading.ThreadPriority.Normal;
            th3.Priority = System.Threading.ThreadPriority.Lowest;
            //**/
    
    
            ///*测试线程锁
            
            /*/
    
            Thread th1 = new Thread(new ThreadStart(Th_lockTest));
            th1.Name = "test1";
            th1.Start();
    
            Thread th2 = new Thread(new ThreadStart(Th_lockTest));
            th2.Name = "test2";
            th2.Start();
    
    		//*/
    
    
    
    
        }
    
    
        public static BaseThread GetInstance()  
    	{
    		if (instance == null)  
    		{
                instance = new BaseThread();  
    		}  
    		return instance; 
    	}
    	
    
        //测试多线程锁
        public void Th_lockTest()
        {
            
            Debug.Log("测试多线程");
            while (true)
            {
                lock (obj)
                {                                //线程“锁”         
                    num++;
                    Debug.Log(Thread.CurrentThread.Name + "测试多线程" + num);
                }
                Thread.Sleep(100);
                if (num > 300)
                {
                    Thread.CurrentThread.Abort();
                }
            }
        }
    
        //测试多线程优先级
        public void Th_test1()
        {
            for (int i = 0; i < 500; i++)
            {
               
                Debug.Log("测试多线程1执行的次数:" + i);
                if(i >200)
                {
                    Thread.CurrentThread.Abort();
                }
            }
        }
        public void Th_test2()
        {
            for (int i = 0; i < 500; i++)
            {
             
                Debug.Log("测试多线程2执行的次数:" + i);
                if (i > 300)
                {
                    Thread.CurrentThread.Abort();
                }
            }
        }
        public void Th_test3()
        {
            for (int i = 0; i < 500; i++)
            {
          
                Debug.Log("测试多线程3执行的次数:" + i);
                if (i > 400)
                {
                    Thread.CurrentThread.Abort();
                }
            }
        }
    
    }
    



  • 相关阅读:
    Hadoop配置
    大数据总览
    Shell(五)Shell输入/输出重定向
    善用try catch来使不可避免的错误发生时,程序不崩溃,只是终止该进程。
    silverlight 程序发布
    linq查distinct
    silverlight 服务端与客户端分2个VS程序打开,同时调试
    将25转成00025的方法
    【转】C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)
    LINQ处理List数据
  • 原文地址:https://www.cnblogs.com/lexiaoyao-jun/p/5208255.html
Copyright © 2011-2022 走看看