当前位置:网站首页 > 技术博客 > 正文

lua协程和unity协程



前言:

协程在中是一个很重要的概念,我们知道,在使用进行游戏开发时,一般(注意是一般)不考虑多线程,那么如何处理一些在主任务之外的需求呢,给我们提供了协程这种方式

为啥在Unity中一般不考虑多线程

  • 因为在中,只能在主线程中获取物体的组件、方法、对象,如果脱离这些,的很多功能无法实现,那么多线程的存在与否意义就不大了

既然这样,线程与协程有什么区别呢:

  • 对于协程而言,同一时间只能执行一个协程,而线程则是并发的,可以同时有多个线程在运行
  • 两者在内存的使用上是相同的,共享堆,不共享栈

其实对于两者最关键,最简单的区别是微观上线程是并行(对于多核CPU)的,而协程是串行的,如果你不理解没有关系,通过下面的解释你就明白了

关于协程

1,什么是协程

协程,从字面意义上理解就是协助程序的意思,我们在主任务进行的同时,需要一些分支任务配合工作来达到最终的效果

稍微形象的解释一下,想象一下,在进行主任务的过程中我们需要一个对资源消耗极大的操作时候,如果在一帧中实现这样的操作,游戏就会变得十分卡顿,这个时候,我们就可以通过协程,在一定帧内完成该工作的处理,同时不影响主任务的进行

2,协程的原理

首先需要了解协程不是线程,协程依旧是在主线程中进行

然后要知道协程是通过迭代器来实现功能的,通过关键字来定义一个迭代方法,注意使用的是,而不是:

两者之间的区别:

  • :是一个实现迭代器功能的接口
  • :是在基础上的一个封装接口,有一个方法返回

在迭代器中呢,最关键的是 的使用,这是实现我们协程功能的主要途径,通过该关键方法,可以使得协程的运行暂停、记录下一次启动的时间与位置等等:

关于迭代器的具体解释:

  • 可以参考:C#官方文档关于迭代器的具体描述

由于 在协程中的特殊性,与关键性,我们到后面在单独解释,先介绍一下协程如何通过代码实现

3、协程的使用

首先通过一个迭代器定义一个返回值为的方法,然后再程序中通过来开启一个协程即可:

在正式开始代码之前,需要了解的两种重载方式:

  • :这种是没有参数的情况,直接通过方法名(字符串形式)来开启协程
  • :通过方法形式调用
  • :带参数的通过方法名进行调用

协程开启的方式主要是上面的三种形式,如果你还是不理解,可以查看下面代码:


                            

版权声明


相关文章:

  • 微信小程序appid有什么用2025-04-04 19:30:04
  • c语言malloc函数用法实例2025-04-04 19:30:04
  • multi_map2025-04-04 19:30:04
  • 2021免费dns2025-04-04 19:30:04
  • http请求结构有哪几部分组成2025-04-04 19:30:04
  • 数据库设计规范标准2025-04-04 19:30:04
  • expdp include=table2025-04-04 19:30:04
  • textview的属性2025-04-04 19:30:04
  • c多线程数据同步2025-04-04 19:30:04
  • 括号匹配的算法2025-04-04 19:30:04