Unity3d多线程
http://blog.csdn.net/dingkun520wy/article/details/49181645
(一)多线程的创建
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();
- }
- }
- }
- }
注意:
1,当多个线程同时访问同一数据时要加线程锁lock。
- Object n=new Object();
- long shu = 0;
- // Use this for initialization
- void Start () {
- }
- // Update is called once per frame
- void Update ()
- {
- lock (n)
- {
- xian = 1;
- }
- }
Unity3d多线程的更多相关文章
- unity3d多线程坑
单独起了一个线程来处理网络相关操作,比较常规的做法.本身没啥特别的东西,碰到了一个不大不小的坑折腾了好久,记录下来吧. 简单的说就是子线程中抛出的异常,如果没有catch的话,会导致子线程悄无声息的退 ...
- Unity3D 海水多线程渲染算法实现
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- [原]unity3d之http多线程异步资源下载
郑重声明:转载请注明出处 U_探索 本文诞生于乐元素面试过程,被面试官问到AssetBundle多线程异步下载时,愣了半天,同样也被深深的鄙视一回(做了3年多u3d 这个都没用过),所以发誓要实现出来 ...
- Loom工具类:Unity3D巧妙处理多线程
Loom代码不多,只有168行, 然而却具备了子线程运行Action, 子线程与主线程交互的能力! public static Thread RunAsync(Action a) public sta ...
- 【Unity3D基础教程】给初学者看的Unity教程(五):详解Unity3D中的协程(Coroutine)
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 为什么需要协程 在游戏中有许多过程(Proc ...
- Unity3D安卓打包参数配置与兼容性的关系分析
前言 在使用Unity3D工程导出安卓安装包的时候,往往会遇到兼容性的问题,针对某些机型,要么无法打开游戏,要么会出现卡机的现象.面对这种情况,我们可以调节相关的参数来提高兼容性. 为了了解在打包时候 ...
- Unity3D手游开发实践
<腾讯桌球:客户端总结> 本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身.虽然基于Unity3D,很多东西同样适用于Cocos.本文从以下10大点进行阐述: 架构设计 原生插件/ ...
- Unity3D重要知识点
数据结构和算法很重要!图形学也很重要!大的游戏公司很看重个人基础,综合能力小公司看你实际工作能力,看你的Demo. 1.什么是渲染管道? 是指在显示器上为了显示出图像而经过的一系列必要操作. 渲染管道 ...
- Unity3D 面试题汇总
最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.(渲染模块)OnGUI.5.再向后,就是卸载模块(TearD ...
随机推荐
- java解析密钥格式
import java.io.StringReader; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1 ...
- php 本周开始时间和结束时间;本月开始时间结束时间;上月开始时间结束时间
<?php /** * 功能:取得给定日期所在周的开始日期和结束日期 * 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD * $first 一周以星期一还是星期天开始,0为星期 ...
- centOS安装Mysql指南
centOS安装Mysql指南 说明:使用操作系统centOS6.4 32位系统:mysql:mysql-5.7.10-linux-glibc2.5-i686.tar.gz; 一.准备 下载mysql ...
- 【Linux】vi(vim)起步学起来有些困难,一步一步温习
以Tomcat的配置文件service.xml为例,记录.学习vi的最常用操作. > 什么是vi or vim? [nicchagil@localhost bak]$ man vi VIM() ...
- Eclipse新建工程编译R cannot be resolved to a variable问题
Eclipse新建工程编译R cannot be resolved to a variable问题 新建工程编译提示R cannot be resolved to a variable 图1 然后打开 ...
- Java_类文件及加载机制
类文件及类加载机制 标签(空格分隔): Java 本篇博客的重点是分析JVM是如何进行类的加载的,但同时我们会捎带着说一下Class类文件结构,以便对类加载机制有更深的理解. 类文件结构 平台无关性 ...
- 统计map上的read数量
samtools flagstat /SRA111111/SRR111222/accepted_hits.bam 78406056 + 0 in total (QC-passed reads + QC ...
- [原创] 使用LP Wizard 10.5 制作 Allegro PCB封装
本文只讲述使用 Calculator 和 Wizard 功能制作封装,通常学会使用这种方法,通用的标准封装就都可以生成了.下面以一个简单的SOIC-8封装的芯片来说明软件使用方法. 第一步,查找相关d ...
- CUBRID学习笔记 7 ms常见错误
基本不是权限问题,就是dll问题. 重新下载或应用dll注意版本. 权限的问题,先本机测试. 看看在web管理有无问题. 剩下的基本就简单了 欢迎转载 ,转载时请保留作者信息.本文版权归本人所有, ...
- 【转】移动端input输入placeholder垂直不居中
在移动端编写input输入框时候,为了输入文字与输入框垂直居中,一般情况下,会将input的line-height的高度等于height.但在移动端输入的时候会发现,虽然输入内容确实是垂直居中了,但是 ...