启动一个线程还是很简单的。
thread = new Thread(delegate()
{
//do something
});
thread.IsBackground = true;
thread.Start();
如果线程函数里面有While循环,不会退出的话,记得在游戏退出或节点销毁的时候手动控制关闭这个线程或退出这个循环。可以自己定义一个状态变量判断。
如果多线程同时操作一个函数的时候,往往存在对一个变量进行读/写操作,这时候就会出错,或者不是理想的那种顺序执行这个单独的函数。可以使用lock()
void togetherFun(object obj)
{
lock (_sLockCallback)
{
curIndex++;
}
}
需要注意的一点是_sLockCallback一定要定义到函数外面,是个静态变量。这样多个线程才能被同个对象锁住。网上很多直接写的是:
//lock无效展示
void togetherFun()
{
object lockObj = new object()
lock(lockObj)
{
curIndex++;
}
}
根本起到顺序进入,还是一起都进来了。