void Start()
{
//创建无参线程对象
Thread thr = new Thread(Func_NoArguments);
//启动线程
thr.Start();
}
// Function Of No Arguments.
void Func_NoArguments()
{
Debug.Log("Run Func_NoArguments");
}
有参启动
void Start()
{
//创建有参线程对象
Thread thr = new Thread(Func_Arguments);
//启动线程,传入参数
thr.Start("Lanou");
}
// Function Of Have Arguments.
void Func_Arguments(object data)
{
Debug.Log("Run Func_Arguments, Data = " + data);
}
常用方法
1.public static void Sleep( int millisecondsTimeout)将当前线程挂起指定的毫秒数。
(1)millisecondsTimeout
类型:System.Int32
挂起线程的毫秒数。 如果 millisecondsTimeout 参数的值为零,则该线程会将其时间片的剩余部分让给任何已经准备好运行的、有同等优先级的线程。 如果没有其他已经准备好运行的、具有同等优先级的线程,则不会挂起当前线程的执行。
(2)public void Resume()
继续已挂起的线程。(已过时)
(3)public void Abort()
在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。 调用此方法通常会终止线程。
(4)public void Join()
阻止调用线程直到线程终止,同时继续执行标准的 COM 和 SendMessage 传送。
(5)public enum ThreadPriority
指定 Thread 的调度优先级。
通过线程池执行线程
2.ThreadPool.QueueUserWorkItem 方法 (WaitCallback)
public static bool QueueUserWorkItem(WaitCallback callBack)
callBack
类型:System.Threading.WaitCallback
一个 WaitCallback,表示要执行的方法。
返回值
类型:System.Boolean
如果此方法成功排队,则为 true;如果无法将该工作项排队,则引发 NotSupportedException。
Unity使用多线程注意
变量都是共享的(都能指向相同的内存地址)
UnityEngine的API不能在分线程运行
UnityEngine定义的基本结构(int,float,Struct定义的数据类型)可以在分线程计算,如 Vector3(Struct)可以 , 但Texture2d(class,根父类为Object)不可以。











