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 which is occupied.

ThreadLocal

A thread local variable wrapper.

VacantEntry

A view into a thread's slot in a ThreadLocal which is unoccupied.

Enums

Entry

A view into a thread's slot in a ThreadLocal that may be empty.