在Rust中,全局变量默认是不可变的(immutable),这意味着它们不能跨线程直接共享。但是,你可以使用Mutex
或RwLock
等同步原语来实现线程安全的共享访问。
例如,你可以使用Arc
来创建一个跨线程可共享的可变全局变量。Arc
(原子引用计数)确保了多个线程可以安全地共享所有权,而Mutex
则提供了互斥锁,以确保在同一时间只有一个线程可以访问和修改数据。
下面是一个简单的示例,展示了如何使用Arc
创建一个跨线程共享的全局变量:
use std::sync::{Arc, Mutex}; use std::thread; fn main() { let shared_data = https://www.yisu.com/ask/Arc::new(Mutex::new(0));"Result: {}", *shared_data.lock().unwrap()); }
在这个示例中,我们创建了一个跨线程共享的全局变量shared_data
,并在多个线程中对其进行递增操作。通过使用Arc
,我们确保了线程安全和共享访问。最后,我们打印出结果,可以看到所有线程都对全局变量进行了递增操作。