同一频繁使用的函数同时进行多个并发调用会导致 Lua 函数阻塞吗?

假设你拥有一个复杂的 Lua 应用程序,其中有一些基础函数被代码的不同部分反复调用。这是一个没有副作用且相对简单的无状态函数。

虚拟机如何处理它?它是否将所有调用排队,并逐个运行它们,在函数返回之前再次调用它?还是它做出一些小伎俩来避免这种情况?如果该函数有一些像 print() 这样的重要副作用会怎样?

点赞
用户869951
用户869951

Lua 是单线程的,因此每个函数调用必须返回才能调用下一个函数。如果函数被阻塞,则虚拟机也会被阻塞。唯一的解决办法是使用协程、Lua lanes 或 C 线程。

2014-11-18 02:42:26