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 上的其他人,所以我试图让它阻塞,因为这会使一切变得很多更轻松)

谢谢

4

1 回答 1

2

似乎每次这样做时,它都在其单独的线程中运行。(如我错了请纠正我)

你错了 ;-) 或者至少,如果你看到创建了其他线程,那么你从 Lua 调用的 C 代码中的某些东西正在这样做。从 Lua 调用的 C(反之亦然)将显式阻塞。

于 2012-08-01T11:33:37.543 回答