私の質問は、Luaスタック(lua_State)を使用してスレッドローカルストレージのようなものを実装する方法ですか?lua状態で保存され、luaスクリプトおよびCAPIからアクセスできる値。
1 に答える
2
これを行うにはいくつかの方法があります。私はそれについて論文を書きました。Lua Programming Gemsの第 1 章です。
最も簡単な方法は、キーが lua_States で値がスレッド ローカル データであるテーブルをレジストリに作成することです。スレッドが収集されたときにスレッドローカルデータが解放されるように、テーブルのキーを弱くします。
スレッド ローカル データが C ライブラリにのみ必要であり、C ライブラリからアクセスされる場合は、代わりにライブラリの関数の共有上位値に同様のテーブルを保持できます。luaL_setfuncsを使用して、関数を共有アップバリュー テーブルに登録します。この手法を使用する利点は、スレッド ローカル データが C ライブラリ専用であることです。
于 2013-02-09T01:37:05.707 に答える