• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

常州手游开发-Thread,Queue,Lock用法

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0324/423.html

常州手游开发-Thread,Queue,Lock用法


1、Thread  多线程
 
Unity里普通用于Socket衔接,开一条线程接音讯。
 
2、Queue 队列
 
对象的先进先出汇合,能够规则特定类型的队列汇合,也能够什么类型都存入队列。
Queue aaa = new Queue();   Queue<int> aaa = new Queue<int>(); 都是能够的。
 
3、lock 关键字
 
主要用于处置并提常州游戏开发培训问题、锁定独占对象。锁定的必需是援用类型!
 
先写一个线程类,不用继承MonoBehaviour。
 
public class TXC
    public Thread ThreadOne;
    public Thread ThreadTwo;
    public Queue<int> queue = new Queue<int>(); //先进先出队列
    public void StartTXC()
    {
        //线程1
        ThreadOne = new Thread(Count);       //线程开端办法
        ThreadOne.IsBackground = true;       //后台线程会随着主线程完毕退出
      //ThreadOne.Name = "TXC1";       //线程名字
        ThreadOne.Start();                   //开端线程
        //线程2
        ThreadTwo = new Thread(Count);
        ThreadTwo.Start();
    }
    public void Count()
    {
                                              //这里能够注释掉lock来测试
            lock (queue)                      //锁定队列,必需等候一条线程访问完成后,别的线程才干运用
            {
                queue.Enqueue(1);             //入队
             // queue.Dequeue();              //出队,返回队列开端处的对象,并且删除它!
                Thread.Sleep(1000);           //线程休眠毫秒数
             // ThreadOne.Suspend();          //暂停线程
             // ThreadOne.Resume();           //继续线程
            }
     }
 
再写一个类:
 
public class NewBehaviourScript : MonoBehaviour {
    TXC xc;
void Start () {
        xc = new TXC();
        xc.StartTXC();
void Update () {
         Debug.Log(xc.queue.Count);  //lock的话,手机App外包打印先1后2,不lock直接2,由于两个线程同时运用了队列。
    void OnApplicationQuit()
    {
       xc.ThreadTwo.Abort();               //终止线程1
       xc.ThreadOne.Abort();               //终止线程2
    }
 


上篇:上一篇:常州手游开发-Unity3d委托模式详解
下篇:下一篇:Unity3d Singleton与对象pool