Unity3d Thread多线程,Queue队列,lock关键字
来源:互联网 发布:特德蒋 知乎 编辑:程序博客网 时间:2024/09/21 09:02
原创
1.Thread 多线程
Unity里一般用于Socket连接,开一条线程接消息。
2.Queue 队列
对象的先进先出集合,可以规定特定类型的队列集合,也可以什么类型都存入队列。
Queue aaa = new Queue(); Queue<int> aaa = new Queue<int>(); 都是可以的。
3.lock 关键字
主要用于处理并发问题、锁定独占对象。锁定的必须是引用类型!
先写一个线程类,不用继承MonoBehaviour。
public class XianCheng{ public Thread ThreadOne; public Thread ThreadTwo; public Queue<int> queue = new Queue<int>(); //先进先出队列 public void StartXianCheng() { //线程1 ThreadOne = new Thread(Count); //线程开始方法 ThreadOne.IsBackground = true; //后台线程会随着主线程结束退出 //ThreadOne.Name = "Xiancheng1"; //线程名字 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 { XianCheng xiancheng;void Start () { xiancheng = new XianCheng(); xiancheng.StartXianCheng();}void Update () { Debug.Log(xiancheng.queue.Count); //lock的话,打印先1后2,不lock直接2,因为两个线程同时使用了队列。} void OnApplicationQuit() { xiancheng.ThreadTwo.Abort(); //终止线程1 xiancheng.ThreadOne.Abort(); //终止线程2 }}
例子很简单,一看就懂,写一堆功能看的烦的人,我看教程就喜欢代码少,注释的。
0 0
- Unity3d Thread多线程,Queue队列,lock关键字
- 多线程无锁(lock-free)队列(queue)的实现探讨
- Java 多线程:Lock 关键字
- Java 多线程:Lock 关键字
- Python多线程:thread、threading、queue
- 无锁队列 lock free queue
- 多线程(三):lock 关键字
- Java多线程之队列Queue
- python多线程模块thread,threading,Queue
- 理解c#多线程中的lock关键字
- 描述C#多线程中 lock关键字
- 描述C#多线程中 lock关键字
- c#多线程中Lock()关键字的使用
- 描述C#多线程中 lock关键字
- Python 多线程|Queue队列|生产者消费者模式|
- Android消息队列模型--Thread,Handler,Looper,Massage Queue
- python多线程-queue队列类型优先级队列,FIFO,LIFO
- Thread Looper与HandlerThread 多线程消息队列
- 相对 与 绝对
- C++每日一练(四种强制转换)
- python小练习7:求出100以内的素数
- 触发器+存储过程+程序集(CLR)+XML+Web service————实现数据同步
- AVFrame关于视音频数据存储
- Unity3d Thread多线程,Queue队列,lock关键字
- Linux---认识与学习BASH
- JVM-垃圾收集机制与内存分配策略
- 自学android随笔(二)启动genymotion:unable to start the virtual device,桌面oracle VM Virtual图标双击没反应
- spark ml 随机森林源码笔记四
- python 判断unicode字符类型
- 如何用windbg分析64位机上32位程序的dump文件
- iOS下拉刷新好厉害
- iis部署的Web网站只能80端口访问,其他端口访问超时的解决办法