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