zoukankan      html  css  js  c++  java
  • unity多线程

    1.如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine.

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

    3.而提到多线程就要提到 Unity 非常常用的协程,然而协程并非真正的多线程。协程其实是等某个操作完成之后再执行后面的代码,或者说是控制代码在特定的时机执行。而多线程在 Unity 渲染和复杂逻辑运算时可以高效的使用多核 CPU,帮助程序可以更高效的运行。通常可以将需要大量计算的算法内容,放置到多线程中执行,包括逻辑框架也可以放到多线程中执行。
    4.适用于:
    (1) 大量耗时的数据计算
    (2) 网络请求
    (3) 复杂密集的I/O操作
    注意:

    • 变量都是共享的(都能指向相同的内存地址)
    • UnityEngine 的 API 不能在分线程运行
    • UnityEngine 定义的基本结构(int, float, struct 定义的数据类型)可以在分线程计算,如 Vector3(struct)可以, 但 Texture2d(class,根父类为 Object) 不可以。
    • UnityEngine 定义的基本类型的函数可以在分线程运行
    5.时间切片
    时间切片的核心思想是:如果任务不能在50毫秒内执行完,那么为了不阻塞主线程,这个任务应该让出主线程的控制权,使浏览器可以处理其他任务。让出控制权意味着停止执行当前任务,让浏览器去执行其他任务,随后再回来继续执行没有执行完的任务。

    所以时间切片的目的是不阻塞主线程,而实现目的的技术手段是将一个长任务拆分成很多个不超过50ms的小任务分散在宏任务队列中执行。

  • 相关阅读:
    Jquery(智能感知AJAX,从后台调数据)
    jQuery插件(输入关键字出现提示,并可查询)
    设置缓存失效的三种方法
    关于fluorinefx基础和服务器搭建的文章地址
    关于过河问题的感悟
    .net 大文件上传
    iis7中运行cmd
    学习总结
    C#开源资源项目(转载)
    HTML数据提取
  • 原文地址:https://www.cnblogs.com/mcyushao/p/11385002.html
Copyright © 2011-2022 走看看