जंग संगामिति के साथ जुड़ें और tokio

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— है, जबकि इसे ले जाना चाहिए 2s अगर मैं गलत नहीं हूँ:

start: 37ns
end: 4.01036111s

वहाँ कुछ है मैं याद कर रहा हूँ?

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

सबसे अच्छा जवाब

1

तुम्हें बुला रहे हैं एसटीडी की नींद कार्यों को रखा है, जो ओएस धागा सोने के लिए है कि अपने कार्यक्रम पर चल रहा है. यदि आप कॉल tokio::time::sleep कार्यों के बजाय, वायदा मूल्यांकन किया जाना चाहिए समवर्ती.

सक्षम करने के लिए वास्तविक समानता में निष्पादन, आप की आवश्यकता होगी का उपयोग करने के लिए tokio::task::spawn जाने के लिए क्रम तय है जो धागा चलाने के लिए पैदा भविष्य पर.

आगे पढ़ने के लिए क्या पर अवरुद्ध है, मैं सुझाव है कि इस उत्कृष्ट ब्लॉग पोस्ट: https://ryhl.io/blog/async-what-is-blocking/

2021-11-22 21:16:29

मैं देख रहा हूँ... तो एक बार हम में async के साथ टोक्यो के लिए, हम करने के लिए पर भरोसा करते हैं, यह सभी के लिए async काम करते हैं. मैं हूँ एक नज़र है करने के लिए इस लिंक, बहुत बहुत धन्यवाद.
miravelardo

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में