annotate src/t16thread/src/racecondition.rs @ 7:8768d36c3b69

thread test
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 12 Jan 2021 14:34:05 +0900
parents
children 2c6285996268
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 use std::sync::Mutex;
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 use std::thread;
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 pub fn mainr() {
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 let counter = Mutex::new(0);
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 let mut handles = vec![];
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 for _ in 0..10 {
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 let handle = thread::spawn(move || {
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 let mut num = counter.lock().unwrap();
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 *num += 1;
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 });
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 handles.push(handle);
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 }
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 for handle in handles {
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 handle.join().unwrap();
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 }
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 println!("Result: {}", *counter.lock().unwrap());
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 }