7

実際、ビジュアル C++ を使用して、lua 関数を (別のスレッドで) ソケット イベントのコールバックとしてバインドしようとしています。私は 1 つのスレッドで lua を初期化し、ソケットは別のスレッドにあるため、ソケットがメッセージを送受信するたびに lua 関数が呼び出され、lua 関数はメッセージ内の「タグ」に従って何をすべきかを決定します。メッセージ。

だから私の質問は:

  1. 同じ Lua 状態を lua 関数に渡すので、安全ですか? なんらかの保護が必要ではないでしょうか。lua 関数は別のスレッドから呼び出されるため、同時に呼び出される可能性があります。

  2. 安全でない場合、この場合の解決策は何ですか?

4

3 に答える 3

2

非同期的に Lua 状態にコールバックするのは安全ではありません。

これに対処するには多くのアプローチがあります。最も一般的なのは、ある種のポーリングです。

最近の汎用同期ライブラリはDarkSideSync です

libev への一般的な Lua バインディングはlua-evです

このSOの回答は、LuaSocketを使用したLua Lanesを推奨しています。

于 2013-05-16T03:04:34.080 に答える