C如何逐行调用执行Lua函数

我一直没有找到答案,尽管我认为这应该是相当普遍的问题,所以我猜我是在做某些愚蠢的事情或者没有正确阅读手册。

无论如何,这就是我试图做的事情。 我有一个程序,其中注册了一些用于 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 上的其他人,所以我试图使它阻塞,因为这将使一切都更加容易)

谢谢

点赞
用户1737
用户1737

你错了 ;-) 或者说,如果你看到其他线程被创建了,那么你所调用的 Lua 中的 C 代码中有些东西正在这样做。从 Lua 调用的 C 代码(反之亦然)将明确地阻塞。

2012-08-01 11:33:37