协同程序原理

2024-02-18 17:44
文章标签 原理 协同程序

本文主要是介绍协同程序原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、协程的本质

//协程可以分为两个部分
//1.协程函数本体
//2.协程调度器

//协程本体就是一个能够中间暂停返回的函数
//协程调度器是Unity内部实现的,会在对应的时机帮我们继续执行协程函数

//Unity只实现了协程调度器部分
//协程的本体本质上就是 C#的一个迭代器方法

二、协程本体是迭代器方法的实现

//1.协程函数本体
//如果我们不通过 开启协程的方法执行协程
//Unity的协程调度器是不会帮我们管理协程函数的
IEnumerator ie = Test();

//但是我们可以自己执行迭代器函数内容
//ie.MoveNext();
//print(ie.Current);//得到 yield return 返回的内容

//ie.MoveNext();
//print(ie.Current);

//ie.MoveNext();
//print(ie.Current);

//ie.MoveNext();
//TestClass tc = ie.Current as TestClass;
//print(tc.time);

//MoveNext 返回值 代表着 是否到了结尾(该迭代器是否执行完毕)
while(ie.MoveNext())
{
print(ie.Current);
}

//2.协程调度器
//继承MonoBehavior后 开启协程
//相当于是把一个协程函数 放入Unity的协程调度器中帮助我们执行
//具体的yield return 后面的规则 也是Unity定义的一些规则

//总结
//你可以简化理解迭代器函数
//c#看到迭代器函数和yield return 语法糖
//就会是把原本是一个的函数 变成 “及部分”
//我们就可以通过迭代器 从上到下遍历这“及部分”进行执行
//就达到了将一个函数中的逻辑分时执行的目的

//而协程调度器就是 利用迭代器函数返回的内容来进行之后的处理
//比如Unity中的协程调度器
//根据yield return 返回的内容 决定了下一次在何时继续执行迭代器函数中的“下一部分”

//理论上来说 我们可以利用迭代器函数的特点 自己实现协程调度器来取代Unity自带的调度器

总结

//协程的本质 就是利用
//C#的迭代器函数“分步执行”的特点
//加上
//协程调度逻辑
//实现的一套分时执行函数的规则

这篇关于协同程序原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/721943

相关文章

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代