skyfffire 2 жил өмнө
parent
commit
69e56746c4
1 өөрчлөгдсөн 43 нэмэгдсэн , 0 устгасан
  1. 43 0
      tests/thread_test.rs

+ 43 - 0
tests/thread_test.rs

@@ -0,0 +1,43 @@
+use std::thread;
+use std::time::Duration;
+use std::io::{self, Write};
+use std::sync::Arc;
+
+struct Runner;
+
+impl Runner {
+    fn run1(&self) -> io::Result<()> {
+        let mut stdout = io::stdout();
+        loop {
+            writeln!(stdout, "111")?;
+            thread::sleep(Duration::from_millis(100));
+        }
+    }
+
+    fn run2(&self) -> io::Result<()> {
+        let mut stdout = io::stdout();
+        loop {
+            writeln!(stdout, "222")?;
+            thread::sleep(Duration::from_millis(100));
+        }
+    }
+}
+
+#[tokio::test]
+async fn test_thread() {
+    let runner = Arc::new(Runner);
+
+    let runner1 = Arc::clone(&runner);
+    let runner2 = Arc::clone(&runner);
+
+    let handle1 = thread::spawn(move || {
+        let _ = runner1.run1();
+    });
+
+    let handle2 = thread::spawn(move || {
+        let _ = runner2.run2();
+    });
+
+    let _ = handle1.join();
+    let _ = handle2.join();
+}