0

この質問はよくあることだと思っていたのですが、答えを見つけることができませんでした。

とにかく、これが私がやろうとしていることです。Lua 用に登録されたいくつかの C 関数を含むプログラムがあります。

別の時点で、次のように lua 関数を呼び出します

lua_getglobal(mainL,"interact");

 if (lua_pcall(mainL, 2, 0, 0) != 0)
          printf("error running function `f': %s",
     lua_tostring(L, -1));
    printf("interact\n");

Lua 関数では、登録されている他の C 関数をたくさん呼び出します。そして、それを行うたびに、別のスレッドで実行されるようです。(間違っていたら訂正してください)

だから私が尋ねようとしているのは、Lua 関数の次の行を実行する前に、C 関数呼び出しが終了するまでブロックする方法があるかどうかです。

(はい、C プログラムでミューテックスを使用してみました。私には機能しますが、何らかの理由で他の PC の他の PC では機能しないようです。そのため、すべてをブロックするようにしようとしています。より簡単に)

ありがとうございました

4

1 に答える 1

2

そして、それを行うたびに、それは別のスレッドで実行されるようです。(私が間違っている場合は私を訂正してください)

あなたは間違っています;-)または、少なくとも、他のスレッドが作成されているのを見る場合は、Luaから呼び出すCコードの何かがそれを行っています。Luaから呼び出されたC(およびその逆)は明示的にブロックされます。

于 2012-08-01T11:33:37.543 に答える