[][src]Crate per_thread_object

Efficient per-object thread-local storage implementation.

use std::thread;
use std::sync::Arc;
use std::cell::RefCell;
use per_thread_object::ThreadLocal;

fn default() -> RefCell<u32> {
    RefCell::new(0x0)
}

let tl: Arc<ThreadLocal<RefCell<u32>>> = Arc::new(ThreadLocal::new());
let tl2 = tl.clone();

thread::spawn(move || {
    tl2.with_or(|val| *val.borrow_mut() += 1, default);
    let val = tl2.with(|val| *val.borrow());
    assert_eq!(0x1, val);
})
    .join()
    .unwrap();

tl.with_or(|val| *val.borrow_mut() += 2, default);
assert_eq!(0x2, tl.with_or(|val| *val.borrow(), default));

Structs

ThreadLocal

Per-object thread-local storage

Constants

DEFAULT_PAGE_CAP