相关疑难解决方法(0)

并发,并行和异步方法有什么区别?

并发是在不同的线程上并行运行两个任务.但是,异步方法并行运行,但在同一个线程上运行.这是如何实现的?那么,并行性呢?

这3个概念之间有什么区别?

concurrency multithreading asynchronous

143
推荐指数
12
解决办法
5万
查看次数

tokio 在 Rust 中加入多个任务

想象一下,一些 future 存储在一个Vec长度由运行时决定的 a 中,你应该同时加入这些 future,你应该怎么做?

显然,通过文档中的示例tokio::join,手动指定每个长度Vec可能是,如 1,2,3,... 并处理可观的案例应该工作。

extern crate tokio;

let v = Vec::new();
v.push(future_1);

// directly or indirectly you push many futures to the vector
 
v.push(future_N);

// to join these futures concurrently one possible way is 

if v.len() == 0 {}
if v.len() == 1 { join!(v.pop()); }
if v.len() == 2 { join!(v.pop(), v.pop() ); }
// ...
Run Code Online (Sandbox Code Playgroud)

我还注意到 tokio::join! 当我使用类似的语法时,将列表作为文档中的参数

tokio::join!(v);
Run Code Online (Sandbox Code Playgroud)

或类似的东西

tokio::join![ v ] /  tokio::join![ v[..] ] …
Run Code Online (Sandbox Code Playgroud)

rust rust-tokio tokio

4
推荐指数
3
解决办法
4587
查看次数