rust写一个多线程和协程的例子

当涉及到多线程和协程时,Rust提供了一些非常强大的工具,其中最常用的库之一是tokio,它用于异步编程和协程。下面我将为你展示一个简单的Rust程序,演示如何使用多线程和协程。

首先,你需要在你的项目的Cargo.toml文件中添加tokio库的依赖:

dependencies

tokio = { version = "1", features = "full" }

然后安装下依赖

cmd命令:cargo build

然后,你可以编写一个简单的Rust程序,其中使用了多线程和协程:

rust 复制代码
use tokio::time::{Duration, Instant};
use tokio::task;

#[tokio::main]
async fn main() {
    // 使用tokio::spawn创建一个异步任务(协程)
    let task1 = task::spawn(async {
        for i in 1..=5 {
            println!("Task 1: Count {}", i);
            tokio::time::sleep(Duration::from_secs(1)).await;
        }
    });

    // 创建一个新的线程
    let thread1 = std::thread::spawn(|| {
        for i in 1..=5 {
            println!("Thread 1: Count {}", i);
            std::thread::sleep(Duration::from_secs(1));
        }
    });

    // 使用tokio::spawn创建另一个异步任务(协程)
    let task2 = task::spawn(async {
        for i in 1..=5 {
            println!("Task 2: Count {}", i);
            tokio::time::sleep(Duration::from_secs(1)).await;
        }
    });

    // 等待协程和线程完成
    task1.await.expect("Task 1 panicked");
    thread1.join().expect("Thread 1 panicked");
    task2.await.expect("Task 2 panicked");

    println!("All tasks and threads are done!");
}

在这个示例中,我们使用了tokio::spawn创建了两个协程,分别执行异步操作。同时,我们也创建了一个新线程,使用std::thread::spawn来执行一个简单的任务。最后,我们等待协程和线程完成。

确保你的项目依赖已正确配置,并且你已经安装了Rust编译器。运行这个程序,你会看到多线程和协程交替执行,并输出相应的计数。

请注意,tokio是异步编程的一个非常强大的库,这个示例只是一个入门级别的演示。在实际项目中,你可以使用tokio来构建更复杂的异步应用程序。

相关推荐
武子康3 小时前
1.2GB 离线语音 Agent 真正值得复用的不是 908ms:四阶段职责 + 状态感知 Tool Schema + 可观测时间锚点
人工智能·后端·agent
掘金者阿豪3 小时前
那些年踩过的 MySQL 迁移坑,这次终于不用绕了
后端
a4493153623 小时前
MacBook USB-C不充电故障诊断:从PD握手到主板供电链路
c语言·开发语言·macos·电脑
用户7713970207063 小时前
深夜食堂:那个让我加班到凌晨的 ! 符号
后端
swipe3 小时前
03|Axios 请求进了后端之后:Controller、Request、Response 是怎么接住它的?
前端·后端·全栈
德福危险3 小时前
从目录枚举到bash破壳漏洞、从流量抓包到组权限提权:靶机练习之symfonos3
开发语言·bash
swipe3 小时前
02|从 `pnpm dev` 到 Spring Boot 启动:后端服务到底怎么跑起来?
前端·后端·全栈
meng半颗糖3 小时前
3.Java流程控制语句
java·开发语言·intellij-idea
网易云信3 小时前
网易智企Data Agent实践入选信通院《智能体创新实践案例汇编》
人工智能·后端·线下活动
影寂ldy3 小时前
C# WinForm 三种自定义控件 + 完全自定义重绘控件知识点
开发语言·c#