【发布时间】:2017-02-17 04:45:30
【问题描述】:
对于以下每个线程局部存储实现,如何使用编译器或标准库公开的标准 ffi 机制在 Rust 程序中访问外部线程局部变量?
- C11
- gcc 的 tls 扩展
- 线程
- Windows TLS API
【问题讨论】:
-
你能补充库并提供一个C函数来读写那些thread_local变量吗?
-
是的。如果 Rust 缺乏必要的工具,我打算编写一个小型胶水库来处理线程局部变量。但是,如果可能的话,我更愿意避免额外的构建依赖项。
-
任何答案都需要您告诉我们您正在使用什么线程系统以及如何创建线程局部变量。一个很好的方法是提供外部代码的 minimal reproducible example 和您创建的 Rust 代码,以显示您希望如何访问它。
-
如果线程局部变量声明为
pub,您应该可以从任何地方访问它。请参阅LocalKey和thread_local或此 playground -
@Doe 是的,我误会了。我使用 gcc 添加了一个 C11 _Thread_local 解决方案的答案。
标签: multithreading rust ffi