中易网

unity引擎是单线程还是多线程

答案:1  悬赏:60  
解决时间 2021-02-27 21:59
unity引擎是单线程还是多线程
最佳答案
Unity3D中的多线程。线程是一个相当复杂的话题,但如果掌握了它,就可以从容的使用多个硬件处理器或处理很难划分管理数据块。

如在场景中用A*算法进行大量的数据计算,变形网格中操作大量的顶点,持续的要运行上传数据到服务器,二维码识别等图像处理,如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine。

线程是在程序中与其他线程同时运行的进行。在多处理器的计算机上可以做到多个线程的真正的同步,更多的线程取决于有多个处理核心。

Unity3D编程时,总有个主线程执行你的代码,也可以创建额外的线程和主线程同时运行。而Unity中,你仅能从主线程中访问Unity3D的组件,对象和Unity3D系统调用。任何企图访问这些项目的第二个线程都将失败并引发错误,这是一个要重视的一个限制。

所以当你写代码时,你认为一个函数开始并达到它执行的点后返回,同样你做的东西又在另外一个函数中执行,但又没有发生单龚厕夹丿蝗搽伟敞连相应的变化。操作系统决定你代码的执行,任何时候,你的代码只能暂时”休眠”掉,然后让另外的代码开始运行。

Unity3D中的多线程及使用多线程

在这个例子中,在第一个线程将A的值加载到CPU寄存器中准备+1后被中断,第二个线程来读取A的值,并减去1000,这时A应该是-950,现在第一个线程重新开始,它在寄存器中的50+1的结果存储于A,A变成了51,而-950已经丢掉了。

从根本上说,要在用多个线程在同时对变量或内存访问时,要采取很多预防措施来确保不会发生这样的事。所以Unity决定从另外线程访问这些变量或者内存是无效的,只是为了避免所有系统和框架对象出现问题。所以要确保一次只有一个线程来修改变量,这不意味着你不能用多线程工作,你可以用”排序”来解决这个问题。

C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象,这里说对象是因为。法锁定一个类型值(value type)或原型(primitive)。

int a = 50;

object guard = new object();

void ThreadOneCode()

{

//一些代码在这

lock(guard)

{

a = a + 1;

}

//其余一些代码在这

}

void ThreadTwoCode()

{

//一些代码在这

lock(guard)

{

a = a - 1000;

}
复制代码

所有都锁定在guard内,保证同一个时间只有一个线程通过guard访问它,你可以使用任何合适的对象。现在你可能会有各种各样的问题,比如你要锁定的不止一件事,可能是互相嵌套的。那我们该怎么办呢?

我们这个类叫Loom,让你可以轻松在另一个线程运行代码,这里有两个要注意的功能:

RunAsync(Action)-在另一个线程上运行的一组代码.

QueueOnMainThread(Action,[可选]float time)-运行在主线程的语句(可选延迟).

用Loom.Current访问Loom-创建一个看不见的GameObject用来处理游戏主线程的互动,下面这个例子用Loom来更新一个网格所有的顶点乘的结果。

//缩放一个网格在第二个线程
复制代码
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新城大药房地址在什么地方,想过去办事
在一个自己真心爱的人面前,可以做到假装冷淡
新奔奔到底杂个放视频嘛
安徽熟食店在什么地方啊,我要过去处理事情
在Word中如何缩小文字???
寻找一名原生态养殖合作伙伴
台湾版仿苹果iphone手机软件安装
嘎啦里有一种虫子一样的东西是什么
中山医科大学研究生往年录取情况
云乡大铜锅米线煲仔家常菜在哪里啊,我有事要
日产汽车烧机油怎么解决?
为什么我叫我前女朋友出来吃东西 我发现她很
在火车站别人向你借手机打电话可靠吗?
韶关的 日语学校有哪些?
400元买什么鞋子好,要篮球鞋好看的?都报下价
推荐资讯
fall feel get go 等动词开头的短语!!!!
新义路这个地址在什么地方,我要处理点事
例假前流很多透明液体是怎么回事
大连永达驾校好吗?
想考个导游证,但据说通过率挺低的。哪里有比
盛通达汽车服务地址好找么,我有些事要过去
高坪上花园到西华师范大学的公交路线
名都旅馆我想知道这个在什么地方
阳谷母女被烧的母亲现在怎么样了
东莞寮步哪个美发店做发型好?
男人找情人,说是解乏,什么意思呢?
我的是win7系统,个人总是测试网速(ping 202
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?