8.2.2 编译时选项(SQLITETHREADSAFE) SQLite 的线程安全机制,从来不是一句“开或关”的开关所能概括的——它是一场在内存模型、锁粒度、编译期契约与运行时行为之间精密校准的舞蹈。当你在 脚本里敲下 ,或在 CFLAGS 中加入 ,你真正签下的,是一份关于内存可见性边界、临界区划分策略、互斥原语选择权以及调用者责任契约的四重协议。而 这个宏,正是这张协议书上最醒目的签名栏。 我们不谈抽象概念,不列教科书定义。我们直接拆开 SQLite 源码的 ,翻到 第 2873 行左右,看那行被无数构建脚本反复修改的条件编译指令: 这短短十几行,就是整个线程安全世界的分水岭。它不是“加锁”或“不加锁”的二元判断,而是一套完整的、可静态裁剪的并发原语实现栈。