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

时间:2012-08-01 11:12:18

标签: c lua blocking

虽然我觉得它应该很常见,但我还是找不到这个问题的答案,所以我猜测我做了些蠢事或者没有读过这个问题。手动正确。

无论如何,这就是我想要做的事情。 我有一个程序,它有几个为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上工作,所以我试图阻止它因为这将使一切变得更容易)

谢谢

1 个答案:

答案 0 :(得分:2)

  

似乎每次都这样做,它就会以单独的线程运行。 (如果我错了,请纠正我)

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