diff options
| author | Botahamec <botahamec@outlook.com> | 2024-03-06 22:40:20 -0500 |
|---|---|---|
| committer | Botahamec <botahamec@outlook.com> | 2024-03-06 22:40:20 -0500 |
| commit | 8311c58b99aa86f4a971ea208e1fb3a9a825d566 (patch) | |
| tree | e30016adea76308c3017e61ca7fe5ddeb5aace2c /examples/double_mutex.rs | |
| parent | d96edbd12da892a101362ae89fb3c10917361fe6 (diff) | |
Added some examples
Diffstat (limited to 'examples/double_mutex.rs')
| -rw-r--r-- | examples/double_mutex.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/examples/double_mutex.rs b/examples/double_mutex.rs new file mode 100644 index 0000000..76f3294 --- /dev/null +++ b/examples/double_mutex.rs @@ -0,0 +1,27 @@ +use std::thread; + +use happylock::mutex::Mutex; +use happylock::{LockGuard, ThreadKey}; + +const N: usize = 10; + +static DATA_1: Mutex<i32> = Mutex::new(0); +static DATA_2: Mutex<String> = Mutex::new(String::new()); + +fn main() { + for _ in 0..N { + thread::spawn(move || { + let key = ThreadKey::lock().unwrap(); + let data = (&DATA_1, &DATA_2); + let mut guard = LockGuard::lock(&data, key); + *guard.1 = (100 - *guard.0).to_string(); + *guard.0 += 1; + }); + } + + let key = ThreadKey::lock().unwrap(); + let data = (&DATA_1, &DATA_2); + let data = LockGuard::lock(&data, key); + println!("{}", *data.0); + println!("{}", *data.1); +} |
