Crate thread_local [−] [src]
Per-object thread-local storage
This library provides the ThreadLocal
type which allows a separate copy of
an object to be used for each thread. This allows for per-object
thread-local storage, unlike the standard library's thread_local!
macro
which only allows static thread-local storage.
Per-thread objects are not destroyed when a thread exits. Instead, objects
are only destroyed when the ThreadLocal
containing them is destroyed.
Note that since thread IDs are recycled when a thread exits, it is possible for one thread to retrieve the object of another thread. Since this can only occur after a thread has exited this does not lead to any race conditions.
Example
use thread_local::ThreadLocal; let tls: ThreadLocal<u32> = ThreadLocal::new(); assert_eq!(tls.get(), None); assert_eq!(tls.get_or(|| Box::new(5)), &5); assert_eq!(tls.get(), Some(&5));
Structs
ThreadLocal |
Thread-local variable wrapper |