您的位置:首页 > 编程语言 > Lua

C++与Lua多线程游戏交互场景探讨

2018-01-17 21:22 162 查看
本文探讨的是关于多线程下Lua的消息队列的通信方式,以及全局静态对象的在MMO游戏中处理的想法。

多线程在lua中的代码表达

用一个Lua对象来表示一条真实的物理线程(不是协程的概念),每条物理线程有对应单独的lua_State, 其中主线程的lua_State通过:
lua_State *main_thread = luaL_newstate()
接口创建,其他线程的lua_State则通过:
lua_State *sub_thread = lua_newthread(main_thread)
接口创建。

初步简单测试,上述实现是共用_G全局变量,可能会出现全局变量多线程访问问题,按情况加个全局变量访问锁

多线程中单例对象的代码表达

用来表示真实的物理线程的Lua对象用来记录该线程用到的非玩家的单例对象,对于场景逻辑的线程,可以根据该线程当前处理哪些场景来确定需要初始化创建哪些单例对象,对于公共的背包线程,则只要背包线程用到的单例对象就创建,可以在初始化前先由开发人员定义单例对象所属的场景ID或线程类型,根据这个信息来实现初始化创建对象就可以
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua c语言 多线程