原创内容,转载请注明原文网址: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