問題
- フォーマットでデータを生成する1つのデータソース
{key, value}
- それぞれが異なるキーを待機している複数のレシーバー
例
データの取得はループで実行されます。時々私は使用することによってキーでラベル付けされた次の値を取得したいでしょう
Value = MyClass:GetNextValue(Key)
値の準備ができるまでコードを停止させたい(ある種のfuture(?)値を作成する)。単純なコルーチンを使用してみましたが、データを待機している場合にのみ機能します。
だから私が聞きたい質問は、コルーチンまたは同様の概念(スレッドなし)を使用してluaに非同期値を実装する方法のようなものですか?
サイドノート
メインの処理関数は、待機中のコンシューマーに値を返すことは別として、受信データの一部(たとえば、特別なキーでラベル付けされたもの)自体を処理します。
完全な使用状況は次のようになります。
-- in loop
ReceiveData()
ProcessSpecialData()
--
-- Called outside the loop:
V = RequestDataWithGivenKey(Key)