2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2020年4月4日 |
---|---|
0.1.0 | 2017年11月16日 |
#322 in 操作系统
43KB
624 行
alloc-tls
alloc-tls
提供了 alloc_thread_local!
宏,这是标准库中 thread_local!
宏的一个近似直接替代品,适用于在实现全局分配器时使用。
与 thread_local!
不同,alloc_thread_local!
解决了实现全局分配器时特有的以下问题
- 在支持
#[thread_local]
属性的平台,注册实现Drop
的类型的析构函数需要分配。当一个线程本地变量从调用分配函数(如malloc
、free
等)初始化时,这会导致重入性。alloc_thread_local!
可以检测到这一点。 - 在Mac上,在动态库加载时访问TLS是不安全的。在实现提供全局分配器的Mac动态库时,
alloc_thread_local!
可以检测库是否已加载,如果在加载过程中加载器本身调用了malloc
或其他类似调用,则可以避免使用TLS。
已知限制
alloc-tls
目前不支持不支持#[thread_local]
属性的平台。
依赖项
~200KB