2

私は C アプリケーションを持っていて、LUA をスクリプト言語として統合しています。LUA の埋め込みは問題なくうまくいきました。

現在、C アプリケーションから 2 つまたは 3 つの異なるスクリプトを同時に実行できるかどうかを知りたいのですが、lua_pcall が同期的に実行されていることに気付きました (そのため、スクリプトの完全な実行が完了するまで戻りません。

同時に複数のスクリプトを実行する方法はありますか、または少なくとも lua_pcall を非同期で実行させる方法はありますか? 実行するスクリプトを制御できないため、スクリプト自体にソリューションは必要ありません (顧客は構成用のスクリプトを作成しますが、そうしなければならないことを顧客に伝えたくありません。スクリプト内で同期を処理します。

4

1 に答える 1

0

Eran が言うように、新しい lua_State (newthread から作成されたもの) を別のシステム スレッドで非常に簡単に実行できます。

これに加えて本当に必要なのは、いくつかの基本的なロック (lua_lock/lua_unlock/init/shutdown を実装する) だけで、グローバルな状態要素 (_G、レジストリ、一部の内部要素) が複数のスレッドからアクセスされなくなります。

于 2013-10-30T13:43:34.080 に答える