【问题标题】:Can many concurrent calls to the same overused function cause blocking in Lua?对同一个过度使用的函数的多个并发调用会导致 Lua 中的阻塞吗?
【发布时间】:2014-11-18 01:06:27
【问题描述】:

假设您有一个复杂的 Lua 应用程序,并且代码的不同部分会重复调用一些基本函数。这是一个无状态函数,几乎没有副作用,而且相当简单。

虚拟机如何处理这个问题?它是否将所有调用排队,并让它们一一运行,等待函数返回后再调用它?还是为了避免这种情况做了一些诡计?如果函数有一些很大的副作用,比如 print()?

【问题讨论】:

标签: lua virtual-machine callblocking


【解决方案1】:

Lua 是单线程的,因此每个函数调用都必须在调用下一个函数之前返回。如果某个功能被阻止,那么 VM 也会被阻止。解决这个问题的唯一方法是协程、Lua 通道或 C 线程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多