annotate src/t16thread/src/main.rs @ 10:7eb649571bc6

add async example
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 18 Jan 2021 13:22:06 +0900
parents aaba40049c28
children 70ab6c2f7f6e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
2c6285996268 pub fn worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
1 use t16thread::mpsc_test::mainc;
2c6285996268 pub fn worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
2 use t16thread::mpsc_test::mainm;
2c6285996268 pub fn worked
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
3 use t16thread::racecondition::mainr;
7
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
4
5
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 use std::thread;
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 use std::time::Duration;
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
7
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
8 fn main1() {
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
9 let v = vec![1, 2, 3];
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
10
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
11 let handle = thread::spawn(move || {
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
12 println!("Here's a vector: {:?}", v);
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
13 });
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
14 // drop(v);
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
15 handle.join().unwrap();
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
16 }
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
17
5
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 fn main() {
7
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
19 let handle = thread::spawn(|| {
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
20 for i in 0..10 {
5
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 println!("hi number {} from the spawned thread!", i);
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 thread::sleep(Duration::from_millis(1));
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 }
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 });
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 for i in 1..5 {
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 println!("hi number {} from the main thread!", i);
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 thread::sleep(Duration::from_millis(1));
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 }
7
8768d36c3b69 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
30 handle.join().unwrap(); // without this, some data are dropped
10
7eb649571bc6 add async example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
31 main1();
7eb649571bc6 add async example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
32 t16thread::mpsc_test::mainm();
7eb649571bc6 add async example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
33 t16thread::mpsc_test::mainc();
7eb649571bc6 add async example
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
34 t16thread::racecondition::mainr();
9
aaba40049c28 unsafe race condition
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
35 t16thread::racecondition::mainu();
5
e869e24e5613 thread test
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }