U3D&协程&异步&状态机&设计模式

来源:互联网 发布:js首页下拉列 编辑:程序博客网 时间:2024/05/14 17:50

之前接触LUA时,就看到过协程2字。只是很少用到,自然没有仔细研究过。U3D中也有协程,并且经常打交道。所以也开始仔细研究之。

那么这里,我就用3W(why-how-what) 的方式,来阐述下自己对协程的理解吧。

一、why

显然引入协程的概念,自然是对一种客户端处理异步防止游戏主循环阻塞的编程方式的总结、归纳得出的一种设计模式。其本质就是其他线程与游戏主循环线程的交互关系。显然为了隐藏这些细节,方便客户端程序编写此类逻辑,而提取出来的一种,编程手法。

二、how

那么,协程是怎么工作的呢。本质上,就是将一段代码切分成一个有限状态机。在主线程中检查该状态机状态并切换状态。这里的关键点是对一段代码做切分。显然不是所有语言都能实现这种设计模式。如C/C++。归纳下,你就会发现,具有协程功能的语言基本上都是脚本语言。因为现代脚本语言有个很重要的特性,就是内嵌函数。没有该特性的支持,我们能抽象,精炼出协程工作模式的通用代码。但是无法做到 将一套时间轴上执行的代码,写在一个函数内!

三、what

所以,协程很好,最大好处是让程序员可以很清楚表达一组异步有序的逻辑过程!而不需要考虑线程间的交互过程

0 0
原创粉丝点击