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

use happylock::mutex::{Mutex, SpinLock};
use happylock::ThreadKey;

const N: usize = 10;

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

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

	let mut key = ThreadKey::lock().unwrap();
	let data = DATA.lock(&mut key);
	println!("{}", *data);
}