【发布时间】:2012-05-20 11:58:36
【问题描述】:
问题
- 一个数据源生成
{key, value}格式的数据 - 多个接收器各自等待不同的密钥
示例
获取数据是循环运行的。有时我会想通过使用
来获得用键标记的下一个值Value = MyClass:GetNextValue(Key)
我希望我的代码停在那里,直到值准备好(产生某种未来(?)值)。我尝试过使用简单的协程,但它们仅在等待任何数据时起作用。
所以我想问的问题是如何使用协程或类似概念(无线程)在 lua 中实现异步值?
旁注
主处理函数除了将值返回给等待的消费者外,还会自己处理一些传入的数据(例如,用特殊键标记)。
完整的使用上下文应该类似于:
-- in loop
ReceiveData()
ProcessSpecialData()
--
-- Called outside the loop:
V = RequestDataWithGivenKey(Key)
【问题讨论】:
标签: asynchronous io lua producer-consumer