diff --git a/usertest/src/main.rs b/usertest/src/main.rs index 6018c7f..c99bc30 100644 --- a/usertest/src/main.rs +++ b/usertest/src/main.rs @@ -151,10 +151,25 @@ fn test_futex() { fn test_rust_mutex() { use std::sync::{Arc, Mutex}; - use std::thread; print!("Testing Rust Mutex ..."); let mutex = Arc::new(Mutex::new(0)); + let mtx_clone = Arc::clone(&mutex); + let mut num = mtx_clone.lock().unwrap(); + *num += 1; + let final_count = *mutex.lock().unwrap(); + if final_count != 1 { + panic!("Mutex test failed, expected 1 but got {}", final_count); + } + println!(" OK"); +} + +fn test_rust_mutex_contention() { + use std::sync::{Arc, Mutex}; + use std::thread; + + print!("Testing Rust Mutex w/contention ..."); + let mutex = Arc::new(Mutex::new(0)); let mut handles = vec![]; for _ in 0..10 { @@ -246,6 +261,7 @@ fn main() { run_test(test_write); run_test(test_futex); run_test(test_rust_mutex); + run_test(test_rust_mutex_contention); run_test(test_rust_file); run_test(test_rust_dir); let end = std::time::Instant::now();