녹 동시성으로 가입하고 토키오

0

질문

나는 실행하려고 두 가지 기능을 병행 join.

나의 코드를 간단하다:

tokio = { version = "1.14.0", features = ["full"] }
use tokio::join;
use std::thread::sleep;
use std::time::{Duration, Instant};

async fn fn_1() -> i8 {
  sleep(Duration::from_secs(2));

  2
}

async fn fn_2() -> i8 {
  sleep(Duration::from_secs(2));

  1
}

#[tokio::main]
async fn main() -> () {
  let now = Instant::now();

  println!("start: {:#?}", now.elapsed());

  let a = fn_1();
  let b = fn_2();

  join!(a, b);

  println!("end: {:#?}", now.elapsed());
}

하지만 내가 무엇을 하든지,이 4s—2s + 2s—하는 동안,그것은 취해야 한다 2 내가 틀리지 않는 경우:

start: 37ns
end: 4.01036111s

뭔가가 나가 없는가?

async-await asynchronous rust rust-tokio
2021-11-22 21:08:44
1

최고의 응답

1

당신이 전화하는 표준의 절전 기능을 넣어 스레드 OS 잠는 프로그램이 실행되고 있다. 를 호출하는 경우 tokio::time::sleep 함수 대신에,선물을 평가해야 하는 동시에.

을 사용하면 실제에서 병렬 실행,를 사용해야 합니다 tokio::task::spawn 자 runtime 결정하는 스레드를 실행하는 양산이 미래에.

에 대한 추가 읽기에 대한 어떤 차단입니다,내가 추천한이 우수한 블로그 게시물: https://ryhl.io/blog/async-what-is-blocking/

2021-11-22 21:16:29

내가 참조하십시오.일단 그래서 우리가 얻으로 비동기와 토키오,우리는 그것에 의존한 모든 비동기 작동합니다. 나는 모습을 이 링크는,많은 감사합니다.
miravelardo

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................