2012-04-23 3 views
0

私はluaでいくつかの経験を持っていますが、トピックのステートメントだけが可能ならば、私は最も簡単な解決方法があります。要するに複数のC/C++/Javaプログラムから1つのluaインスタンスへのアクセス

問題

、プログラム(プログラムのセット)は、IPCのいくつかの並べ替えを形成し、LUAを介して接続されます。さて、私はそれらのそれぞれの上にLua状態を作成することができますが、私はまだLua-Lua IPCを使う必要があります。私はそれを行うことができますが、私はただ一つのインスタンスを作成し、これらのアプリケーションすべてからアクセスすることができれば、プロセスを単純化することができたと思いました。

ここでは、中央luaアプリケーションがスレッドセーフな方法で記述される必要があるということを認識しています。まず、単純なアプローチとして、すべてのアプリケーションからデータをキューに入れ、コルーチンを使用してイベントを解決したいと考えました。

質問(の部分に壊れた):それはそれを行うことができる方法であれば、

  1. はネイティブAPIを使用して1つのLuaの状態をaccesingされていますが、複数の「ホスト」
  2. から可能呼び出し、それが正しく実行されることを確かめるために、私が何を保証しなければならないか。
  3. そうでなければ、私はかなりgoogle'ableであるLua IPCを使用しようとしているので、それは疑問をかなり混乱させます。

編集1: 私は今、別のLUA「通信」ライブラリを掘りだけど、本当にすべてを見つけることができません。私は今localhost TCP + JSONに執着しているので、質問のポイント3ははるかに貴重です。

答えて

0

Luaは(それがスレッド間で複数の別個lua_State Sを使用しても安全だが、異なるスレッドで同じものをアクセスしない)lua_State内のスレッドセーフではありません。したがって、APIにプロセス間通信の要素がいくつかあっても、それにアクセスする複数のプロセスでは機能しません。

+0

私はアプリケーションごとに1つのルア状態を設定する必要があります。あなたはこのアプローチのメモリフットプリントとパフォーマンスについて詳しく説明できますか? –

+0

@Bartek:「メモリフットプリントと性能」は、通信しているもの、正確に通信しているもの、読み込んでいるものとクロストークしているもの、そしてそうでないもの提供されます。 –

+0

たくさんのことを伝えています(私はあなたに正確な数字を教えることはできません)。メモリについては、私が立ち上げたすべてのアプリケーションのルア状態を作成することはあまりにも高価ではないということを少し恐れています。 –

関連する問題