一般函数调用和pcall之间的区别是什么?

我正在使用lua语言,并且我知道pcall是用于受保护调用的,我的问题是两种调用方式是否都归结为相同的C代码。例如:

function a(arg)
   ...
end

正常调用:

a(arg)

受保护调用:

pcall(a, arg)

实际上,我正在使用'lua_lock / lua_unlock'来保护lua_State不受损坏。从源代码(lua 5.1.4)可以看出,'lua_pcall'在调用'lua_lock / lua_unlock',但我不确定普通的函数调用方式是否也是基于'lua_pcall'还是使用'lua_lock / lua_unlock'?如果不是,那是否意味着我必须将所有函数调用更改为'pcall(...)',才能从'lua_lock / lua_unlock'中受益?

有人能解释一下吗?谢谢。

点赞