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