rust里mp5a4_rust tokio mpsc 异步发送数据
启动两个异步任务,一个阻塞在键盘输入。一个间歇的读取通道,有数据就输出。在快速输入的时候会卡住,因为 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 异步发送数据相关推荐
- kafka异步发送数据_在Kafka上异步发送数据
kafka异步发送数据 对于一个项目,我试图记录用户的基本交易,例如添加和删除一个项目以及多种类型的项目,并为每笔交易向kafka发送一条消息. 日志机制的准确性不是至关重要的,在kafka服务器停机 ...
- rust里mp5a4_Rust base64 编码解码 首个rust小作品【自用别吐我】
202003 rust 1.42.0编译通过.升级为单线程加管道,想必效率会高一些. 20191114,rust 1.39 编译通过,增加了注释,有些所有权的东西算是理解了 rust 1.27.2编译 ...
- rust里mp5a4_Rust源码分析:channel内部mpsc队列
首先,之前的upgrade过程中内存的回收要稍微注意下.因为Receiver现在指向shared::Packet之后,那个new_port需要被析构,也就是调用drop函数,我们看下drop的实现: ...
- 在Kafka上异步发送数据
对于一个项目,我试图记录用户的基本交易,例如添加和删除一个项目以及多种类型的项目,并为每笔交易向kafka发送一条消息. 日志机制的准确性不是至关重要的,在kafka服务器停机的情况下,我不希望它阻止 ...
- rust里mp5a4_Rust中的RefCell和内部可变性
Rust在编译阶段会进行严格的借用规则检查,规则如下: 在任意给定时间,要么只能有一个可变引用,要么只能有多个不可变引用. 引用必须总是有效. 即在编译阶段,当有一个不可变值时,不能可变的借用它.如下 ...
- antd react table扩展行(expandedRowRender,onExpand)异步记载数据再渲染问题
最近在做项目的时候遇到一种情况,需求是做可展开的表格,当点击展开时异步发送请求将数据渲染到展开的内容中. 项目用的是react+Antdesign 主要使用的就是Table组件的onExpand,ex ...
- discard connection丢失数据_python kafka 生产者发送数据的三种方式
python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...
- C# 的TCPClient异步连接与异步读数据
Socket的TCP通讯 一. socket的通讯原理 服务器端的步骤如下. (1)建立服务器端的Socket,开始侦听整个网络中的连接请求. (2)当检测到来自客户端的连接请求时,向客户端发送收到连 ...
- .net socket与完成端口、异步发送相关研究
原帖地址:http://www.cnsw.org/bbs/thread-68634-1-1.html 经过一番研究,终于可以确认,.net socket的beginSend和beginReceive用 ...
最新文章
- 洞察疫情,微软推出新冠数据分析网站COVID Insights
- Boost:reference wrapper参考包装的测试程序
- 【javascript】数字相加
- HarmonyOS之IDL接口使用规范
- λ表达式_Java 8新特性:学习如何使用Lambda表达式,一看必懂
- mysql-复习表的基本操作01
- 1. UI Tests简介
- 2013第41周三余生最年青的时候
- 恩施州推进大数据监督检查工作规范化常态化
- idea oracle 工具,IntelliJ IDEA的数据库管理工具实在太方便了
- 联想 m73 黑苹果 软路由 esxi AIO
- 老司机教你如何优雅地完成一个小项目测试
- gps校正 android,通过GPS时间同步Android设备?
- scratch编程我的世界3D史蒂夫
- NetBIOS编程获取本机MAC地址及一个小坑
- IntelliJ IDEA 激活 破解补丁
- mSystems | 中农汪杰组揭示影响土壤“塑料际”微生物群落的机制
- 知网查重提交论文显示服务器错误,知网查重时显示检测失败是什么原因?
- oem是代工还是贴牌_OEM贴牌和ODM贴牌的区别
- 同济大学软件学院万院长谈择业(转载)
热门文章
- 计算机科目的一千字,计算机心得体会1000字_1000字美文摘抄_1000字左右的
- 涂鸦NBIOT OpenCPU开发快速入门(一)
- 学生档案管理系统(c++)代码实现
- iphone--关于iphone多国语言设置
- 【网络安全】使用goole让burpsuit跑字典
- 随机森林_袋外错误率(OOB error)
- 汇编语言笔记(全)(长文警告)
- JavaScript简餐——代理Proxxy与反射(三)
- word如何自动生成目录-----如何写软件文档
- 基于javaweb的在线奶茶店系统(java+jsp+javascript+servlet+mysql)