现在我使用类似的方法来加载资源
http://www.lua.org/pil/9.4.html- 读取文件1
- 读取文件2
- …
Pro:使用纯lua,简单。
Contra:它不是并发的,每个文件读取阻塞渲染,然后才进入下一个。此外,如果你需要处理数据(例如,从源代码创建着色器程序,或解码图片并创建纹理),你需要将其传递给C并将其带回来。
在过去我使用C线程调用lua函数,然后他们完成加载文件。
Pro:它是并发的。可以在c++端处理加载的数据
Contra:您需要将加载的数据传递回Lua
也许我在这两个方面都做错了,有更好的方法来加载和处理Lua + C数据?
我将使用混合方法,使用两种类型的线程:
- 处理从消息队列中读取并实际加载资源的线程。
- Loader线程运行Lua通过排队请求异步处理文件。
通过添加更多特定类型的线程,它可以很好地扩展。
当然,您应该通过分析当前的实现来确保这是值得的。使用线程和消息队列会增加更多的C/c++代码。毕竟这只是一个加载屏幕;)