全局
const
值始终内联并且在内存中没有地址。static
值永远不会内联,并且有一个具有固定地址的实例。static mut
值不是内存安全的,因此只能在unsafe
块中访问。- 有时在多线程代码中使用全局静态可变变量可能很危险,因此请考虑使用 std::sync::Mutex 或其他替代方法
lazy_static
对象是不可变的,只初始化一次,在所有线程之间共享,并且可以直接访问(不涉及包装器类型)。相比之下,thread_local
对象是可变的,每个线程初始化一次,访问是间接的(涉及包装类型LocalKey<T>
)