私のC++プログラムにLuaスクリプトをロードし、そのスクリプトを別のスレッドで複数回呼び出すことができます。私は各スレッドでスクリプトをロードすることを避けようとしています(なぜそのオーバーヘッドを通過するのか)。複数のスレッドで複数の状態でLuaスクリプトを一度ロードする
私はC++プログラム内でこのような何かを考えている:
create lua state L
load script into L
とn個のスレッドでは、実行します。
create local lua state Si (i = 1..n, i.e., separate state per thread)
grab "compiled" script from L and invoke in the context in Si
これを行うに "標準" アプローチはありますか?主な目的は、各スレッドにスクリプトをロードさせないようにすることです。スクリプトは、状態Siにおいて複数回実行されてもよい。別々のスレッドで実行されているスクリプトは連携していない(つまり、互いについては何も知らず、そのまま維持したい)ということに注意してください。
C++スレッドまたはluaスレッドについて話していますか? Luaには、実際には異なるプログラムスレッドを意味しないスレッドという概念もあります。また、基本的に単一の状態を強制するデータレースやミューテックスがなければ、あなたが望むことができるとは思えません。各状態でスクリプトを実行する必要があり、各状態は別の状態でなければなりません。 – Rochet2
私は別々のC++スレッドについて話しています。メインプログラムはステートLでスクリプトをロードします。Lで作成されたスクリプトを適用したい後のC++スレッドが作成されますが、新しいC++スレッドであり、同じスクリプトを同時に実行するスレッドの倍数がある可能性があるので、スクリプトがスレッド固有の状態で実行されるようにします。上の私のピジンコードはC++コードです。 – mkilian