【问题标题】:Lua loading screen - courotines vs C threadsLua 加载屏幕 - courotines 与 C 线程
【发布时间】:2014-08-01 01:51:06
【问题描述】:

现在我使用此处描述的类似方法来加载资产

http://www.lua.org/pil/9.4.html

喜欢

  • 读取文件 1
  • 渲染
  • 读取文件 2
  • 渲染
  • ...

专业人士:使用普通 lua,简单。

相反:它不是并发的,每个文件读取都会阻塞渲染,然后才会转到下一个。 此外,如果您需要处理数据(例如,从源代码创建着色器程序,或解码图片并创建纹理),您需要将其传递给 C 并取回。

过去我使用 C 线程调用 lua 函数然后他们完成加载文件。

专业人士:它是并发的。您可以在 C++ 端处理加载的数据

对比:你需要将加载的数据传回 Lua

也许我在这两个方面都做错了,还有更好的方法来使用 Lua + C 加载和处理数据?

【问题讨论】:

  • 同时加载文件的速度是否足以值得麻烦?

标签: c multithreading lua coroutine


【解决方案1】:

我会采用混合方法,使用两种类型的线程:

  • 处理线程,从消息队列中读取并实际加载资源。
  • 加载器线程运行 Lua 以通过将请求排队来异步处理文件。

通过添加更多特定类型的线程,它可以很好地扩展。

当然,您应该通过分析当前的实现来确保它真的值得麻烦。使用线程和消息队列会增加更多的 C/C++ 代码。毕竟它只是一个加载屏幕;)

【讨论】:

  • 我想补充一点,在 C 和 Lua 之间交换数据是快速
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
相关资源
最近更新 更多