4

現在、サードパーティ製品と統合するための Lua スクリプトに取り組んでいます。このサードパーティ製品は、複数のスレッドで同時に私の Lua スクリプトを呼び出しますが、これは問題ありません。ただし、スクリプトからログ ファイルに書き込む際に、どのスレッドが Lua スクリプトを実行しているかを特定し、それをログ ファイルにも書き込みたいと考えています。

これにより、どのログ エントリが一緒に属しているかを識別できます。

Lua の異なるスレッドからのログ エントリを適切に区別する方法についての考えは大歓迎です。

4

1 に答える 1

3

テーブルのデフォルトtostring()表現には、テーブルの (メモリ) アドレスが含まれます。同じプロセスで実行されている異なる Lua VM 間で一意であることが保証されています。

これを利用して、スレッドごとに一意の ID を生成できます。

local unique_id = tostring( {} ):sub(8) -- extracts the "address" part

print(unique_id)
--> outputs 0x7f876b608b00

ちなみに、これは、グローバル Luaレジストリで使用する一意のキーを生成するための推奨される方法です。

于 2014-06-07T13:38:16.687 に答える