• 协同程序原理


    一、协程的本质

    //协程可以分为两个部分
    //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#的迭代器函数“分步执行”的特点
    //加上
    //协程调度逻辑
    //实现的一套分时执行函数的规则

  • 相关阅读:
    什么是好代码/坏代码?给普通人的图解示例
    记录fork子进程执行execl阻塞卡死的问题
    ES6---几个优雅的运算符使用技巧(?. ??= ||= &&=)
    Technical Support
    java 获取两个日期之间的所有月份 (年月)、以及月数、年数
    【Python】np.expand_dims()理解及实践
    uniapp 开发公众号 h5(openid,微信支付,订阅通知)
    网络协议一
    强化学习——策略梯度理解点
    WPF 分组
  • 原文地址:https://blog.csdn.net/lqd201314/article/details/136152842