您的位置:首页 > 移动开发 > Unity3D

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;

多线程实例

/*
*
* 游戏多线程
* */
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();
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: