启动两个异步任务,一个阻塞在键盘输入。一个间歇的读取通道,有数据就输出。在快速输入的时候会卡住,因为 mpsc 的 buffer 设置为了 5。 代码如下:

use std::io;

use tokio::task;

use tokio::sync::mpsc;

use std::io::{Read, BufRead};

#[tokio::main]

async fn main() {

// input

let (mut tx_in, mut rx_in) = mpsc::channel::(5);

task::spawn(async move {

loop {

let line = task::spawn_blocking(move || {

let stdin = io::stdin();

let line = stdin.lock()

.lines()

.next()

.expect("there was no next line")

.expect("the line could not be read");

line

}).await.unwrap();

println!("send: {}", line);

tx_in.send(line).await.unwrap();

}

});

// work

task::spawn(async move {

loop {

tokio::time::delay_for(tokio::time::Duration::from_millis(1000)).await;

match rx_in.recv().await {

Some(data) => {

println!("data: {}", data);

},

None => ()

}

}

});

std::thread::park();

println!("Hello, world!");

}

rust里mp5a4_rust tokio mpsc 异步发送数据相关推荐

  1. kafka异步发送数据_在Kafka上异步发送数据

    kafka异步发送数据 对于一个项目,我试图记录用户的基本交易,例如添加和删除一个项目以及多种类型的项目,并为每笔交易向kafka发送一条消息. 日志机制的准确性不是至关重要的,在kafka服务器停机 ...

  2. rust里mp5a4_Rust base64 编码解码 首个rust小作品【自用别吐我】

    202003 rust 1.42.0编译通过.升级为单线程加管道,想必效率会高一些. 20191114,rust 1.39 编译通过,增加了注释,有些所有权的东西算是理解了 rust 1.27.2编译 ...

  3. rust里mp5a4_Rust源码分析:channel内部mpsc队列

    首先,之前的upgrade过程中内存的回收要稍微注意下.因为Receiver现在指向shared::Packet之后,那个new_port需要被析构,也就是调用drop函数,我们看下drop的实现: ...

  4. 在Kafka上异步发送数据

    对于一个项目,我试图记录用户的基本交易,例如添加和删除一个项目以及多种类型的项目,并为每笔交易向kafka发送一条消息. 日志机制的准确性不是至关重要的,在kafka服务器停机的情况下,我不希望它阻止 ...

  5. rust里mp5a4_Rust中的RefCell和内部可变性

    Rust在编译阶段会进行严格的借用规则检查,规则如下: 在任意给定时间,要么只能有一个可变引用,要么只能有多个不可变引用. 引用必须总是有效. 即在编译阶段,当有一个不可变值时,不能可变的借用它.如下 ...

  6. antd react table扩展行(expandedRowRender,onExpand)异步记载数据再渲染问题

    最近在做项目的时候遇到一种情况,需求是做可展开的表格,当点击展开时异步发送请求将数据渲染到展开的内容中. 项目用的是react+Antdesign 主要使用的就是Table组件的onExpand,ex ...

  7. discard connection丢失数据_python kafka 生产者发送数据的三种方式

    python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...

  8. C# 的TCPClient异步连接与异步读数据

    Socket的TCP通讯 一. socket的通讯原理 服务器端的步骤如下. (1)建立服务器端的Socket,开始侦听整个网络中的连接请求. (2)当检测到来自客户端的连接请求时,向客户端发送收到连 ...

  9. .net socket与完成端口、异步发送相关研究

    原帖地址:http://www.cnsw.org/bbs/thread-68634-1-1.html 经过一番研究,终于可以确认,.net socket的beginSend和beginReceive用 ...

最新文章

  1. 洞察疫情,微软推出新冠数据分析网站COVID Insights
  2. Boost:reference wrapper参考包装的测试程序
  3. 【javascript】数字相加
  4. HarmonyOS之IDL接口使用规范
  5. λ表达式_Java 8新特性:学习如何使用Lambda表达式,一看必懂
  6. mysql-复习表的基本操作01
  7. 1. UI Tests简介
  8. 2013第41周三余生最年青的时候
  9. 恩施州推进大数据监督检查工作规范化常态化
  10. idea oracle 工具,IntelliJ IDEA的数据库管理工具实在太方便了
  11. 联想 m73 黑苹果 软路由 esxi AIO
  12. 老司机教你如何优雅地完成一个小项目测试
  13. gps校正 android,通过GPS时间同步Android设备?
  14. scratch编程我的世界3D史蒂夫
  15. NetBIOS编程获取本机MAC地址及一个小坑
  16. IntelliJ IDEA 激活 破解补丁
  17. mSystems | 中农汪杰组揭示影响土壤“塑料际”微生物群落的机制
  18. 知网查重提交论文显示服务器错误,知网查重时显示检测失败是什么原因?
  19. oem是代工还是贴牌_OEM贴牌和ODM贴牌的区别
  20. 同济大学软件学院万院长谈择业(转载)

热门文章

  1. 计算机科目的一千字,计算机心得体会1000字_1000字美文摘抄_1000字左右的
  2. 涂鸦NBIOT OpenCPU开发快速入门(一)
  3. 学生档案管理系统(c++)代码实现
  4. iphone--关于iphone多国语言设置
  5. 【网络安全】使用goole让burpsuit跑字典
  6. 随机森林_袋外错误率(OOB error)
  7. 汇编语言笔记(全)(长文警告)
  8. JavaScript简餐——代理Proxxy与反射(三)
  9. word如何自动生成目录-----如何写软件文档
  10. 基于javaweb的在线奶茶店系统(java+jsp+javascript+servlet+mysql)