
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
上篇讨论了 C 函数如何被 Lua 调用,反过来呢?C++ 程序如何读取 Lua 脚本里的变量、调用 Lua 函数、处理返回值?

上一篇文章把 `mp` 模块比作脚本的"操作系统",C 层的 `mp.get_property`、`mp.wait_event` 等函数就是"系统调用"。但系统调用本身怎么实现的?为什么 `mp.get_property("volume")` 能拿到播放器的音量?
上一篇文章把 `mp` 模块比作脚本的"操作系统",C 层的 `mp.get_property`、`mp.wait_event` 等函数就是"系统调用"。但系统调用本身怎么实现的?为什么 `mp.get_property("volume")` 能拿到播放器的音量?
在 mpv 里写了一个 Lua 脚本,只需要 `mp.register_event("start-file", fn)`,播放新文件时 `fn` 就自动被调用。你不知道是谁在监听事件、不知道回调是怎么被调度的、甚至不需要写主循环——但它就是能工作。这背后,是 `mp` 模块提供的**一整套运行时环境**在默默运转。本文用"操作系统"类比,从设计层面讲清楚这套环境做了什么、怎么实现的。
function_safe是解决C++回调函数重入修改问题的安全工具。当回调执行过程中需要修改自身时,普通std::function会导致未定义行为。function_safe采用延迟更新机制,通过双缓存策略(_impl执行区+_tmp暂存区)和状态标志(_doing+_update),利用RAII管理状态转换。其模板构造函数通过SFINAE技术避免与拷贝构造冲突,确保类型安全。该设计完美解决了网







