我正在学习 Rust,在研究静态变量时我看到了 2018 年的这条评论:
Rust 要求一切都是线程安全的(即使你不使用 线程,单线程程序的概念不存在 锈)。因为静态变量可以从多个 线程,你必须使静态变量线程安全。一 方法是将值放入互斥体中。
所以,如果我理解正确的话,Rust 假设最坏的情况,即每个编译的程序都是多线程的,即使你的程序只在单个线程上运行,那么你也必须这样做(我说的是一个可变静态):
Rust 假定多个线程是正确的,但选项并不像您描述的那么有限。以下是一些附加选项:
Mutex<T>
优化为 atomic_refcell::AtomicRefCell<T>
,以提高性能。并发访问会出现恐慌而不是阻塞,但您无需担心这一点。不过,您仍然需要担心重入访问。thread_local!
与 Cell<T>
或 RefCell<T>
一起使用,具体取决于您是否需要参考,这可能更符合人体工程学。wasm32
(WebAssembly)。 Mutex
实现被 几乎不做任何工作 所取代。