基于嵌入式LUA协同程序分析与设计
2010-05-11段鑫陈宇孙伟力
自动化与信息工程 2010年4期
段鑫 陈宇 孙伟力
1 引言
Lua是一种简洁、轻量、可扩展的脚本语言。该语言的设计目的是为了嵌入宿主程序中,从而为应用程序提供灵活的扩展和定制功能。语言采用 clean C编写(所谓 Clean C ,指 ANSI C 和 C++ 共通的一个子集),可移植性强,几乎在所有操作系统和平台上都可以编译和运行,因此也可以运行在目前常见的嵌入式处理器上。通过Lua语言对应用软件的扩展,实现了设备的现场可定制和可扩展能力,为嵌入式产品的应用提供了广阔空间。Lua有内建与操作系统无关的协同模式,在Lua语言中称之为coroutine。对于嵌入式产品的最终用户,其关心的重点在具体应用功能的设计与实现上,采用协同的嵌入式功能扩展程序可以简化开发过程。同时为避免过多的涉及程序设计语言细节,本文在实现协同功能的基础上设计了适合嵌入式产品功能扩展的协同程序实现方法,简化协同编程的实现。
2 协同机制
Coroutine是Lua提供的一种“非对称的协同程序”,即coroutine采用两个函数来控制协同程序的执行,一个用于挂起执行,另一个用于恢复执行。一个非对称协同程序可以看作是从属于它的调用者,二者之间关系非常类似于例程与其调用者之间的关系。只是协同程序不是必须在执行逻辑结束时才返回到调用者,而可以在执行的任何阶段主动挂起并返回调用者,当再次恢复执行时可以从挂起处继续执行。
对于每个协同程序,在创建时都对应一个状态(lua_State)或者称之为线程(thread),状态中保存了协同程序运行的上下文和数据。……
登录APP查看全文
