`

rust 线程 spawn

    博客分类:
  • rust
 
阅读更多
use std::thread;
use std::time::Duration;

fn main() {
    let v = vec![1,2,3];
    //通过在闭包之前添加move关键字,我们强制闭包获得它正在使用的值的所有权
    let handle = thread::spawn(move||{
        for i in v{
            println!("spawn {}",i);
            thread::sleep(Duration::from_millis(100));
        }
    });

    //drop(v);
    for i in 1..5 {
        println!("hi number {} from the main thread!", i);
        thread::sleep(Duration::from_millis(1));
    }
    let s = handle.join().unwrap();
    println!("s:{:?}",s);
}


hi number 1 from the main thread!
spawn 1
hi number 2 from the main thread!
hi number 3 from the main thread!
hi number 4 from the main thread!
spawn 2
spawn 3
s:()

分享到:
评论

相关推荐

    thread-id:在Rust中获得唯一的线程ID

    获取Rust中当前线程的唯一ID。 对于诊断和调试,获取每个线程不同的ID通常很有用。 ,标准库还没有公开执行此操作的方法,因此没有这种方法。 例子 use std :: thread; use thread_id; let handle = thread :: ...

    Rust 程序设计语言 简体中文版.pdf

    例如,使用 `std::thread::spawn` 函数可以创建新的线程。 8. Cargo 的使用: Cargo 是 Rust 的包管理器,可以帮助开发者管理项目的依赖关系。使用 Cargo 创建项目需要使用 `cargo new` 命令,例如 `cargo new ...

    下面是一个非常详细的Rust语言教程.docx

    Rust 支持轻量级的线程和消息传递并发,例如: ```rust use std::thread; fn main() { let handle = thread::spawn(|| { for i in 1..=5 { println!("Thread: {}", i); } }); for i in 1..=3 { println!(...

    shuttle:Shuttle是用于测试并发Rust代码的库

    Shuttle是用于测试并发Rust代码的库。 它是许多随机并发测试技术的实现,包括。 入门 考虑以下简单的并发代码: use std :: sync :: {Arc, Mutex}; use std :: thread; let lock = Arc :: new (Mutex :: new ( 0u...

    Shuttle 是一个用于测试并发 Rust 代码的库

    穿梭Shuttle 是一个用于测试并发 Rust 代码的库。它是许多随机并发测试技术的实现,包括具有发现错误概率保证的随机调度程序。入门考虑这段简单的并发代码:use std:: sync:: {Arc, Mutex};use std:: thread;let ...

    parking:线程停放

    停车处 线程停车和取消停车。 帕克处于已通知或未通知状态。 方法park()阻塞当前线程,直到派克得到通知,然后将其放回未通知状态...thread :: spawn ( move || { thread :: sleep (Duration :: from_millis ( 500 ));

    procspawn:像线程

    此板条箱提供了使用类似于thread::spawn的功能生成进程的功能。 与thread::spawn不同,不能通过使用闭包来传递数据。 相反,如果必须显式地传递为可序列化的对象(特别是它必须是序列化的)。 产生的闭包的返回值...

    event-listener:通知异步任务或线程

    事件监听器通知异步任务或线程。这是一个同步原语类似由梅德Vyukov发明的。您可以使用此板条箱将非阻塞数据结构转换为异步或阻塞数据结构。请参阅一个实现,该实现公开了用于获取锁的...// Spawn a thread that will se

    基于Win32线程池API的异步执行程序-Rust开发

    基于Win32线程池API的异步执行程序基于Win32线程池API的异步...let hello = wae :: spawn(异步移动{let msg = rx.await.unwrap(); println!(“ {}”,msg);}); tx.send(“问候你好!”)。unwrap(); 你好。 }

    lelet:像任务执行者一样的golang

    由于此功能,在任务中执行阻塞操作始终是安全的,您无需担心会阻塞整个执行程序线程。 安装 安装好运行: $ cargo add lelet 例子 use std :: thread; use std :: time :: Duration; use futures_timer :: Delay; ...

    mrsc:带有请求的mpsc

    如果您有多个工作程序需要在共享状态下执行事务,而不必在所有线程之间共享状态结构,则这是基于rusts mpsc的基本构建块。 当心事务被阻塞,因此建议避免事务处理程序中昂贵的代码。 安装 将此添加到您的Cargo.toml...

    tokio-rayon:使用Tokio + Rayon将异步代码与占用大量CPU的线程池混合

    东京人造丝 使用 + 将异步代码与大量CPU的线程池混合 资源 TL; DR 有时,您正在做异步... let nft = tokio_rayon :: spawn_async ( || { do_some_crypto_stuff () }). await ?; assert_eq! (nft, ExpensiveNft);

Global site tag (gtag.js) - Google Analytics