-
[rust] tokio 비동기 동시 처리 기본 예시 코드Rust 2024. 11. 24. 18:06반응형
tokio를 통한 async 작업을 동시 실행. dotnet의 Task.WaitAll() 과 유사
입력받은 초(sec)만큼 시간이 출력되는 작업 print_now를 각각 f1, f2 작업을 만들어 동시 실행 처리.
tokio::join으로 들어온 작업 중 가장 늦게 끝난 작업 기준으로 종료
[main.rs]
use tokio; use time::{OffsetDateTime}; // 포맷팅된 시간 글자를 표기하기위한 라이브러리 #[tokio::main] async fn main() { let f1 = print_now(1, 5); let f2 = print_now(2, 10); tokio::join!(f1, f2); // f1, f2 } // 1초당 현재시간(UTC) 표기 async fn print_now(id: i32, sec: i32) { let mut i = 0; while i < sec { println!("print{}, {}", id, OffsetDateTime::now_utc()); tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; i += 1; } }
[Cargo.toml]
[package] name = "tokio-test" version = "0.1.0" edition = "2021" [dependencies] tokio = { version = "1.41.1", features = ["full"]} time = "0.3.36"
반응형'Rust' 카테고리의 다른 글
[rust] tokio, bb8, tokio_postgres DB 연결 예시 코드 (0) 2024.11.24 [rust] 규칙에 맞는 프로젝트 템플릿을 통해 새로운 rust 프로젝트 생성을 돕는 cargo-generate (2) 2024.11.10 [rust] axum 과 utoipa 로 swagger를 지원하는 web api 구현 예제 (1) 2024.09.18