Unity3d多线程
2015-10-16 18:01
411 查看
(一)多线程的创建
Thread t = new Thread(new ThreadStart(Go));
Thread t1 = new Thread(Go);
两种创建方式没有区别;
(二)多线程的状态控制和优先级
多线程有4种状态:Start()开始;Abort()终止;Join()阻塞;Sleep()休眠;
有5种优先级:从高到底依次为:Highest,AboveNormal
,Normal ,BelowNormal ,Lowest;
线程的默认优先级为Normal;
多线程实例
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(); } } } }
相关文章推荐
- 全面解析Unity3D自动生成的脚本工程文件
- [unity3d]通过C#脚本操作游戏对象
- Unity 3D中的内存管理与优化游戏运行性能的经验
- Unity5.x Ugui Button事件 及 改变Text 内容
- unity3D 如何提取游戏资源 (反编译)+代码反编译
- 关于unity3d动画控制器的一些小工具的写法
- unity编辑器学习,创建自己的窗口
- Unity3D 游戏在 iOS 上因为 trampolines 闪退的原因与解决办法
- unity3D自定义菜单项
- Unity导出切割后的Sprite图片
- Unity 内存管理——手机调试Profiler
- Unity 3d脚本加密方案
- Cg per-vertex lighting with texture
- Unity笔记 Surface Shader
- Unity Terrain Optimze
- Cg shader with single texture
- Unity Shader Example 1 : Texture
- Cg per-pixel lighting with vertex lights
- Unity卡牌循环滚动点击
- Cg two-sided per-pixel lighting