2 个版本

0.1.2 2024 年 3 月 11 日
0.1.1 2023 年 11 月 15 日
0.1.0 2023 年 11 月 13 日

Rust 模式 中排名 1176

Download history 179/week @ 2024-03-09 11/week @ 2024-03-16 41/week @ 2024-03-30 11/week @ 2024-04-06

每月下载量 61

MIT 许可证 MIT

19KB
415

lazy_thread_local

Docs Crates.io Crates.io

按对象懒初始化的线程局部存储

此库提供了 ThreadLocal 类型,允许为每个线程使用对象的单独副本。这允许进行按对象线程局部存储,与 crate thread_local 不同,此 crate 提供懒初始化且不依赖于 std。

线程对象在线程退出时不会被销毁。相反,对象仅在包含它们的 ThreadLocal 被丢弃时才会被销毁。

此 crate 使用平台相关的方 法来创建线程局部键。在 Unix 上,使用 pthread local storage。在 Windows 上,使用 Fibers storage。在 wasm 上,它依赖于 std 来提供线程 id。

示例

ThreadLocal 的基本用法

use lazy_thread_local::ThreadLocal;
let mut tls: ThreadLocal<u32> = ThreadLocal::new(||5);
assert_eq!(tls.get(), &5);
*tls = 6;
assert_eq!(tls.get(), &6);

在常量上下文中初始化 ThreadLocal

use lazy_thread_local::ThreadLocal;

static TLS: ThreadLocal<u32> = ThreadLocal::const_new(5);

assert_eq!(TLS.get(), 5);

依赖关系

~185KB