Crate thread_local_object [−] [src]
Per-object thread local storage.
The ThreadLocal
type which stores a distinct (nullable) value of some type for each thread
that accesses it.
A thread's values are destroyed when it exits, but the values associated with a ThreadLocal
instance are not destroyed when it is dropped. These are in some ways the opposite semantics of
those provided by the thread_local
crate, where values are cleaned up when a ThreadLocal
object is dropped, but not when individual threads exit.
Because of this, this crate is an appropriate choice for use cases where you have long lived
ThreadLocal
instances which are widely shared among threads that are created and destroyed
through the runtime of a program, while the thread_local
crate is an appropriate choice for
short lived values.
Examples
use std::sync::Arc; use std::thread; use thread_local_object::ThreadLocal; let tls = Arc::new(ThreadLocal::new()); tls.set(1); let tls2 = tls.clone(); thread::spawn(move || { // the other thread doesn't see the 1 assert_eq!(tls2.get_cloned(), None); tls2.set(2); }).join().unwrap(); // we still see our original value assert_eq!(tls.get_cloned(), Some(1));
Structs
OccupiedEntry |
A view into a thread's slot in a |
ThreadLocal |
A thread local variable wrapper. |
VacantEntry |
A view into a thread's slot in a |
Enums
Entry |
A view into a thread's slot in a |