`

rust channel

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

pub fn f_channel() {
    let (tx, rx) = mpsc::channel();
    let tx1 = tx.clone();
    thread::spawn(move || {
        let vec = vec![
            "hi",
            "tom",
            "aaa",
        ];
        for v in vec{
            tx1.send(v).unwrap();
            thread::sleep(Duration::from_secs(1));
        }
    });

    thread::spawn(move || {
        let vec = vec![
            "hi",
            "tom",
            "aaa",
        ];
        for v in vec{
            tx.send(v).unwrap();
            thread::sleep(Duration::from_secs(1));
        }
    });


    for received in rx {
        println!("Got: {}", received);
    }
    //let received = rx.recv().unwrap();

}

mod tests {
    use crate::channel::f_channel;

    #[test]
    fn test_channel() {
        f_channel();
    }
}

Got: hi
Got: hi
Got: tom
Got: tom
Got: aaa
Got: aaa
分享到:
评论

相关推荐

    sonic-channel:用于声音搜索后端的Rust客户端

    用于搜索后端的Rust客户端。 我们建议您从开始。 安装 在Cargo.toml sonic-channel = { version = "0.4" }为依赖Cargo.toml 。 Cargo.toml示例: [ package ] name = " my-crate " version = " 0.1.0 " authors =...

    ipc-channel:Rust通道的多进程直接替换

    ipc-channel是通过本机OS抽象实现Rust通道API(一种通信顺序过程的形式,CSP)的实现。 在后台,此API使用Mac上的Mach端口和通过Linux上的Unix套接字传递的文件描述符。 serde库用于序列化值以通过导线传输。 ipc-...

    通过 JNI 实现 Java 与 Rust 的 Channel 消息传递

    # 博客 https://blog.csdn.net/weixin_47560078/article/details/143994892 使用 crossbeam_channel + JNI 实现了 Java 与 Rust 之间的消息传递,适配多生产者多消费者模型,并且保证了内存安全。

    交叉编译Rust语言为arm开发板

    在这个例子中,使用了 './configure --disable-docs --release-channel=stable --target=arm-unknown-linux-gnueabihf' 来进行配置。这个配置命令禁用了文档的构建,并选择了稳定的发布渠道,同时指定了目标架构为...

    Rust语言入门教程-学习Rust的基础语法、案例示例和进阶内容

    - 通过内置的同步原语(如Mutex)和通道(channel),Rust能够安全地实现多线程编程。 - 例如,使用`std::thread::spawn`创建新线程。 3. **宏** - Rust中的宏允许在编译时生成代码,用于元编程和代码重用。 - ...

    rustberry:覆盆子pi A上的裸露金属锈

    配置项目以使用Nightly Rust Channel rustup override set nightly 安装依赖项 cargo install cargo-binutils rustfilt rustup component add llvm-tools clippy rust-src 设置硬件 您需要的东西: 树莓派A CP2102...

    Rust - Programming Rust - SECOND EDITION - Fast, Safe Systems

    - **任务与通道:** Rust提供了基于任务(Task)和通道(Channel)的并发模型,允许开发者轻松地编写出高度并发的程序,且保持内存安全。 - **无锁编程:** Rust通过所有权系统和生命周期等机制支持无锁编程,减少...

    Rust 全面指南:从基础到高级,一网打尽 Rust 的编程知识

    Rust通过通道(Channel)和锁(Mutex/Lock)等机制支持并发编程。通道提供了一种线程间安全的数据交换机制,而锁则用于同步访问共享资源。Rust的独特之处在于其所有权和借用机制,这使得开发者能够编写更安全的并发...

    HyParView算法的Rust实现_rust_代码_下载

    Rust可能使用channel或者message passing来实现节点间的通信。 3. **状态管理**:每个节点需要维护一个网络视图,包括已知的节点列表、它们的状态等。这可能涉及到数据结构的设计,例如用HashMap存储节点及其信息。...

    Rust语言教程.docx

    - **消息传递:** 通过通道(`channel`)进行进程间通信。 - **异步编程:** 使用`async/await`关键字实现非阻塞的异步编程。 3. **标准库与第三方库:** - **标准库:** 提供了丰富的功能,如文件操作、网络编程等...

    这是 Rust Programming Language

    它的通道(channel)和Arc(Atomic Reference Counted)等机制提供了安全的数据共享方式。 8. ** Cargo**:Rust的标准包管理器和构建工具Cargo,使得项目管理、依赖管理和构建变得简单。它还支持版本控制和发布第三...

    如何学习Rust语言.docx

    - **消息传递**:通过通道(`std::sync::mpsc::channel`)实现进程间通信。 - **同步原语**:包括互斥锁(`Mutex`)、读写锁(`RwLock`)等,用于保护共享资源。 #### 三、实践操作与资源推荐 **3.1 Rust Playground** ...

    rust语言详细教程学习 rust重点知识总结.docx

    3.通道(Channel) 6.高级特性 1.生命周期 2.智能指针 3.宏 7.项目实战 1.命令行工具开发 2.Web 应用开发(可选,基于 Rocket 等框架) 二、各章知识点总结 (一)Rust 语言基础 1.变量与数据类型 1.变量声明与...

    Rust语言学习教程及示例代码

    - **线程**:Rust的`std::thread`库提供了原生线程支持,线程间通信通过`channel`或共享数据实现。 - **Arc与Mutex**:`Arc`是原子引用计数器,用于线程安全的共享;`Mutex`提供了互斥锁,保证同一时间只有一个...

    rust实战 源代码 code-1st-edition

    9. **并发编程**:Rust的并发模型基于轻量级线程(绿线程,Green Thread)和通道(channel),保证了线程安全,避免了数据竞争。 10. **泛型(Generics)**:泛型允许编写可重用的代码,适用于多种数据类型,我们将...

    Rust for C#/.NET 开发人员 中文 pdf

    - **Rust**:使用通道(`std::sync::mpsc::channel()`)实现生产者-消费者模式。 - **C#/.NET**:使用`System.Threading.Channels`命名空间实现。 ##### 24. 测试 - **Rust**:使用`cargo test`命令进行单元测试。 - ...

    Rust:在Rust中实现的所有算法

    在Rust中,`Mutex`、`Arc`和`channel`等工具可以帮助处理并发和同步问题。 标签中的"rust-lang"表明这是关于Rust语言本身的学习资源,而"hacktoberfest"和"HacktoberfestRust"可能意味着这是一个开源项目,参与者的...

    timer.rs:Rust计时器的简单实现

    计时器 在Rust中以及针对Rust的Timer的简单实现。例子 extern crate timer;extern crate chrono;use std :: sync :: mpsc :: channel;let timer = timer :: Timer :: new ();let (tx, rx) = channel ();let _guard =...

    深入浅出Rust - 范长春1

    《深入浅出Rust》是范长春所著的一本关于Rust编程语言的教程...管道(Channel)作为并发编程的一种手段,也进行了讲解。 总的来说,《深入浅出Rust》全面覆盖了Rust语言的基础到高级特性,是学习Rust编程的宝贵资源。

Global site tag (gtag.js) - Google Analytics