【发布时间】:2022-11-25 04:39:11
【问题描述】:
我想在程序开始时为所有 4 个线程初始化线程局部变量。
thread_local! {
static local: i32
}
#[tokio::main(worker_threads = 4)]
async fn main() {
// local = get_local().await;
}
【问题讨论】:
-
async当您使用多线程执行器(通过tokio::main)时,任务和线程本地存储通常不能很好地协同工作,其中任务可以在线程之间移动。这里的最终目标是什么?如果您正确使用宏,您的线程局部变量将已经被初始化。 -
最终目标是将一些 Tonic grpc 客户端放在 thread_local 中,这样我就不需要每次都初始化客户端。但我想还是有可能得到一个通用的解决方案?我这里有固定数量的线程,我的“真正的”程序在初始化完成后启动。
标签: rust rust-tokio