summaryrefslogtreecommitdiff
path: root/examples/basic.rs
blob: b9c564134e27c8aacf034c4c29fa2d755ef0e2a8 (plain)
use std::thread;

use happylock::{Mutex, ThreadKey};

const N: usize = 10;

static DATA: Mutex<i32> = Mutex::new(0);

fn main() {
	let mut threads = Vec::new();
	for _ in 0..N {
		let th = thread::spawn(move || {
			let key = ThreadKey::get().unwrap();
			let mut data = DATA.lock(key);
			*data += 1;
		});
		threads.push(th);
	}

	for th in threads {
		_ = th.join();
	}

	let key = ThreadKey::get().unwrap();
	let data = DATA.lock(key);
	println!("{data}");
}