【发布时间】:2012-09-07 03:42:13
【问题描述】:
我正在阅读一些 Lua 书籍,并且正在考虑将一些遗留(并且写得不好)的 C 代码迁移到 Lua 和 C 的混合体中。
但是,这个遗留代码使用线程来处理一些关键任务(基本上是音频/视频流),而有些简单的任务也需要一些关注(用户界面)。根据我的阅读,Lua 并不直接支持线程,而是提倡使用协程。
在这种情况下迁移到基于协程的环境是否明智?在我看来,我可以想象一个调度程序,它总是在每次尝试恢复最不重要的协程之间首先尝试恢复高优先级协程。由于我没有这方面的经验,所以我在这里问。
编辑
尼可波拉斯询问了更多细节。
这是一个实时应用程序。我不能承受很大的延迟来处理某些事件,例如准备处理的新视频帧。之前的 C 程序使用线程和回调来执行此操作。例如,在出现新帧时,会调用回调并准备数据进行处理(回调作为生产者,视频线程作为消费)。
我还没有考虑如何处理回调(也许我会将它们保留在 C 中并使用一些互斥锁来更新 Lua 代码的数据),但我怀疑这种设置是否使用上述工具适用于此类问题,如果有人有一些示例或故事并希望分享。
【问题讨论】:
-
没有看到代码,或者对具体情况有更多了解,很难有把握地回答这个问题。
-
还没有代码。如果协程对于这种类型的应用程序是否值得,我正在征求意见。这是一个实时应用程序(流媒体)。是协程。他们相处得好吗?
标签: multithreading lua coroutine