当前位置: 首页 > news >正文

九亭做网站seo如何优化网站推广

九亭做网站,seo如何优化网站推广,主流跨境电商平台有哪些?,cn域名做犯法网站rust中的超时处理 自从 tokio 1.0发布以来,rust的异步开发总算大势已定。尽管没达到标准库的速度,依然挡不住大家的热情。看编程排行榜,增加2倍的开发者。 既生瑜何生亮,感觉go就是小号的rust。 不废话了。背景:之前…

rust中的超时处理 

自从 tokio 1.0发布以来,rust的异步开发总算大势已定。尽管没达到标准库的速度,依然挡不住大家的热情。看编程排行榜,增加2倍的开发者。

既生瑜何生亮,感觉go就是小号的rust。

不废话了。背景:之前用go开发一个边缘网关的小东东,业余时间做了一大半。后来学了rust,打算练手,用rust重新写。

在crate中央仓库里找来找去,选择了 tokio-modbus。测试中发现用rtu的方式下,如果slave没有发回数据,程序将陷入无限等待中。也没找到如何设置这个超时。串口配置中倒是有个超时设置,不知道有啥用。

在tokio-modbus的github上,找到有人提到这个问题。那个解决问题的方式实在是理解不了,也很啰嗦。

自己动手, 用golang和tokio中都有的 select 很好的解决问题。

核心代码如下

1 tokio::select! {
2     result = &ctx.read_holding_registers(3,12) => match result {
3         Ok(v) => println!("Reading holding {:?}", v),
4         Err(_) => println!("reading err"),
5     },
6     _ = tokio::time::sleep(std::time::Duration::from_millis(100)) => println!("reading timeout 100 ms"),
7 }

完整的测试代码如下

use tokio_modbus::prelude::Reader;
use tokio_serial::SerialPortBuilderExt;#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {let mut port = String::from("");let ports = tokio_serial::available_ports().unwrap();for p in ports {port = String::from("com1");match p.port_type {tokio_serial::SerialPortType::UsbPort(info) => {println!("{}, {:?}", p.port_name, info);port = p.port_name;},_ => println!("{}, unknown type", p.port_name),}}println!("port is {}", port);let slave = tokio_modbus::slave::Slave(0x3);let com = tokio_serial::new(port,9600).timeout(std::time::Duration::from_millis(70)).data_bits(tokio_serial::DataBits::Eight).stop_bits(tokio_serial::StopBits::One).parity(tokio_serial::Parity::None).open_native_async();  // tokio_serial::SerialPortBuilderExt// let com = tokio_serial::SerialStream::open(&builder).unwrap();// only open local serial_portlet ctx = tokio_modbus::prelude::rtu::connect_slave(com.unwrap(), slave).await;let mut ctx = match ctx {Ok(c) => c,Err(e) => { println!("err is {}", e); return Ok(())},};println!("rtu ctx ok, {:?}", ctx);let now = std::time::Instant::now();// let mut timeend = tokio::time::sleep(std::time::Duration::from_millis(100));tokio::select! {result = &ctx.read_holding_registers(3,12) => match result {Ok(v) => println!("Reading holding {:?}", v),Err(_) => println!("reading err"),},_ = tokio::time::sleep(std::time::Duration::from_millis(100)) => println!("reading timeout 100 ms"),}println!("elapsed {} millis", now.elapsed().as_millis());Ok(())
}

复制代码

http://www.ds6.com.cn/news/22945.html

相关文章:

  • 山东住房城乡建设厅网站首页百度推广效果怎样
  • 政府网站建设整改情况北京seo分析
  • 个人服装定制网站怎么优化自己公司的网站
  • 网站一级目录论坛seo招聘
  • 四秒网站建设网站推广服务报价表
  • 廊坊手机网站团队学生没钱怎么开网店
  • 安徽网站建设科技百度长尾关键词挖掘
  • 网站建设开发方案网站诊断分析
  • 电子商务网站开发实例论文关键词排名优化易下拉技巧
  • 网站建设开发百度快速排名软件原理
  • 网站做二维码互联网营销做什么
  • 东莞 营销网站制作优化电脑的软件有哪些
  • 网站里的做菠菜怎么建网站赚钱
  • 电脑自带的做网站叫什么软件百度的广告推广需要多少费用
  • 邢台企业网站制作公司网络推广岗位职责和任职要求
  • 像京东一样的网站查询网站注册信息
  • 泉州企业自助建站系统优化建站
  • 玉树商城网站建设semantic ui
  • rails网站开发企业网站seo推广
  • 怎么做才能让网站人气提升免费发布平台
  • 天津 做网站新手网络推广怎么干
  • 手机网站jquery底部导航菜单怎么推广自己的店铺
  • 做网站赚钱的案例十大新媒体平台有哪些
  • 传媒公司取名 创意青岛网络优化厂家
  • 网站如何做担保交易广州网站营销seo费用
  • 中铁广州建设有限公司网站东莞市网络seo推广企业
  • iframe框架做网站百度手机版网址
  • 企业不开了网站备案吗网站搜索引擎优化诊断
  • HTMT超链接网站怎么做做推广哪个平台效果好
  • 品牌推广服务成都排名seo公司