2017-09-21 12 views
2

私が知っているように、私たちはlua関数を呼び出す必要があるときは、lua_State * L = lua_open()を呼び出してluaインタプリタを作成する必要があります。 C++プログラムで同時にいくつのluaインタプリタを開くことができますか?何千というルアインタプリタがあれば、パフォーマンスに影響します。私はC++プログラムで何lua_Stateを持つことができますか?

+2

Lua VMは単一のOSスレッドで動作します(VMに何らかの仕事を依頼している場合のみ)。 1000個のLua VMを同時に動作させるには、1000個のOSスレッドを並列に実行する必要があります。これはパフォーマンスに重大な影響を与えます。一方、単一のOSスレッドから(ラウンドロビン方式で)すべてのLua VMを交互に実行することができます。 'lua_open()'は別のOSスレッドを作成しません。 –

答えて

0

lua_Statesには、リソースを使用するメモリがあります。また、一度に実行できるのは1つだけです。これは、実行可能な同時状態の数を制限します。しかし、彼らが「待っている」ときは、変数とロードされたモジュールにのみメモリを使用します。

+0

しかし、私はlua_open()を使ってたくさんのlua_Stateを作成することができます。そして、lua_Stateのアドレスは異なっています – Rhysol

関連する問題