现在我使用此处描述的类似方法来加载资源
http://www.lua.org/pil/9.4.html
喜欢
- 读取文件 1
- 渲染
- 读取文件 2
- 渲染
- ...
优点:使用普通的 lua,简单。
相反:它不是并发的,每个文件读取都会阻塞渲染,然后才转到下一个文件。 此外,如果您需要处理数据(例如,从源代码创建着色器程序,或解码图片并创建纹理),您需要将其传递给 C 并将其取回。
过去我使用 C 线程调用 lua 函数,然后它们完成加载文件。
优点:它是并发的。您可以在 C++ 端处理加载的数据
相反:你需要将加载的数据传回Lua
也许我在这两方面都做错了,有更好的方法使用 Lua + C 加载和处理数据吗?
最佳答案
我会在这里采用混合方法,使用两种类型的线程:
- 处理线程,从消息队列中读取数据并实际加载资源。
- 加载器线程运行 Lua,通过将请求排队来异步处理文件。
通过添加更多特定类型的线程,它可以很好地扩展。
当然,您应该通过分析当前的实现来确保确实值得这么麻烦。使用线程和消息队列会添加更多 C/C++ 代码。毕竟这只是一个加载屏幕;)
关于c - Lua 加载屏幕 - courotines 与 C 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24155580/