`

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-...

    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...

    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-executors:一个带有Rust执行任务者的库

    执行者具有Rust高性能任务执行器的库。用法将此添加到您的Cargo.toml : [ dependencies ]executors = " 0.9 " 您可以使用,例如, 安排一些n_jobs在多个n_workers线程,并通过收集结果mpsc::channel 。 use ...

    chan:用Rust编写的简单的“ chan”样板

    用Rust编写的一个简单的类似“ chan”的板。 ⣿⣿⣷⡁⢆⠈⠕⢕⢂⢕⢂⢕⢂⢔⢂⢕⢄⠂⣂⠂⠆⢂⢕⢂⢕⢂⢕⢂⢕⢂ ⣿⣿⣿⡷⠊⡢⡹⣦⡑⢂⢕⢂⢕⢂⢕⢂⠕⠔⠌⠝⠛⠶⠶⢶⣦⣄⢂⢕⢂⢕ ⣿⣿⠏⣠⣾⣦⡐⢌⢿⣷⣦⣅⡑⠕⠡⠐⢿...

    tokio-nsq:基于Tokio的Rust NSQ客户端

    基于Rust 客户端。 Tokio NSQ旨在成为功能完善的NSQ客户端实现。 Tokio NSQ可作为,API文档可在上。 版本控制 该项目遵循严格的语义版本控制。 在1.0.0之前的版本中,重大更改只有次要版本。 基本消费者示例 let ...

    Rust 中的二进制编码器/解码器实现。

    servo/ipc-channel :IPC-Channel 使用 Bincode 在进程之间使用类似通道的 API 发送结构。例子use serde:: {Serialize, Deserialize}; #[derive(Serialize, Deserialize, PartialEq, Debug)]structEntity { x:f32 ,...

    rustracing:用于Rust的OpenTracing API

    生锈 用于Rust的 API。例子 use rustracing :: sampler :: AllSampler;use rustracing :: tag :: Tag;use rustracing :: Tracer;use std :: thread;use std :: time :: Duration;// Creates a tracerlet (span_tx, ...

    每晚有界spsc队列-有界SPSC队列-Rust开发

    有界SPSC队列此板条箱为Rust提供了一个非常简单的有界单生产者单消费者(SPSC)队列。 它提供了有界SPSC队列的数据结构。此板条箱为Rust提供了一个非常简单的有界单生产者单消费者(SPSC)队列。 它为两个线程提供了...

    single-value-channel:Rust并发单值更新和接收通道

    single_value_channel 非阻塞单值更新和接收通道。 该模块提供了最新消息样式的通道,更新源可以在其中以几乎无阻塞的方式更新接收者拥有的最新值。 与mpsc::channel不同,每个发送的值都将覆盖“最新”值。 有关更...

    Rust 并发编程工具

    线程同步channel ,用于消息传递的多生产者多消费者通道。Parker ,一个线程停放原语。ShardedLock ,一种具有快速并发读取的分片读写锁。WaitGroup ,用于同步某些计算的开始或结束。公用事业Backoff ,用于自旋...

    mirakc:一个用Rust编写的Mirakurun兼容的PVR后端

    米拉克一个用Rust编写的Mirakurun兼容的PVR后端快速开始如果您已经使用和构建了电视录制系统,则只需将Mirakurun替换为mirakc。 建议使用可从下载的Docker映像。 有关如何为您的环境制作自定义Docker映像,请参阅 。...

    用 Rust 编写的 Telegram Bot 跟踪新的 Github 版本

    发布跟踪器这用于跟踪在 GitHub Releases 上发布的 Releases 并将其发布在 Telegram Channel/Group 上。设置导出 env 变量或只填写 .env 文件CHAT_ID="" //ID of the chat where you wanna set the alert to API_...

    chan:Rust的多生产者,多消费者并发通道

    extern crate crossbeam_channel as channel; extern crate signal_hook; fn notify (signals: & [c_int]) -> Result <channel>> { let (s, r) = channel :: bounded ( 100 ); let signals = signal_hook :: ite

    concurrent_queue:在Rust中进行中的并发队列工作

    在我的4核笔记本电脑上,从两个线程中的每个线程发送10,000,000个数字以供另一个线程使用需要1.1秒,而使用mpsc::channel进行相同的操作则需要2.4秒。 使用4个生产者线程和1个使用者线程在并发通道上使用2.0秒,在...

    rustracing_jaeger:用于Rust的Jaeger跟踪库

    // Creates a tracerlet (span_tx, span_rx) = crossbeam_channel :: bounded ( 10 );let tracer = Tracer :: with_sender (AllSampler, span_tx);{ let span = tracer. span ( "sample_op" ). start (); // Do ...

    shared-channel:WebAssembly的共享频道

    这使我们可以将Rust代码部署为与主线程通信的工作进程。 用法 在您的Cargo.toml包括此依赖Cargo.toml : [ dependencies ] wasm-rs-shared-channel = " 0.1.0 " 看一下,了解如何wasm-rs-shared-channel 。 执照 ...

    mles-rs:在Rust,Tokio和Serde上的分布式发布-订阅数据服务和Mles协议参考实现

    Mles客户端首先通过发送正确的Mles协议标头和值三元组(uid,channel,msg)来订阅频道,其中该频道是要发布/订阅的频道。 消息可以为空或包含第一个发布的消息。 Mles服务器验证Mles协议标头,然后将Mles客户端...

    pwm-pca9685-rs:适用于PCA9685 I2C 16通道,12位PWMServoLED控制器的与平台无关的Rust驱动程序

    Rust PCA9685 16通道12位I2C PWM / Servo / LED驱动器 这是基于特性的PCA9685 PWM / Servo / LED控制器的与平台无关的Rust驱动程序。 此驱动程序使您可以: 启用/禁用设备。 请参阅: enable() 。 设置一个或多...

Global site tag (gtag.js) - Google Analytics