前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】 2019-10-15 使Tokio调度程序快10倍

【Rust日报】 2019-10-15 使Tokio调度程序快10倍

作者头像
MikeLoveRust
发布2019-10-21 12:03:32
6700
发布2019-10-21 12:03:32
举报
文章被收录于专栏:Rust语言学习交流

RxRust v0.3更新发布

在v0.2我们实现了所有运算符和可视线程的安全性之后,RxRust现在可以通过调度程序跨线程传递任务。这样,所有用户提供的闭包都必须满足Send + Sync + 'static,甚至永远不需要使用调度程序和多线程。

现在,我们移除了bounds的SyncSend'static,并添加了新的特性IntoShared。这样可以为本地线程实现运算符,并实现IntoShared将其转换为线程安全的运算符。默认情况下,RxRust始终使用单线程版本以获得最佳性能,如果需要在线程中传递IntoShared对象,则使用RxRust 将本地对象转换为线程安全的对象。

更新前:
代码语言:javascript
复制
let res = Arc::new(Mutex(0));
let c_res = res.clone();
observable::of(100).subscribe(|v| { *res.lock().unwrap() = *v });

assert_eq!(*res.lock().unwrap(), 100);
更新后:
代码语言:javascript
复制
let mut res = 0;
observable::of!(100).subscribe(|v| { res = *v });

assert_eq!(res, 100);

重要变化 移除 RxFnRxValue

  • operators: 移除 Multicast
  • observable: 移除 ObservableOnce
  • observable: observable::from_vecobservable::from_range 函数整合到 宏observable::from_iter! .
  • observable: observable::empty函数变为宏observable::empty! .
  • observable: observable::of 函数变为宏 observable::of! .
  • observable: observable::from_future函数变为宏 observable::from_future!
  • observable: observable::from_future_with_err 函数变为宏observable::from_future_with_err!
  • observable: observable::interval 函数变为宏observable::interval!

详细信息前往GitHub查看

Watt:由wasm支持的proc宏(概念验证),编译时间几乎为零

  • 编译速度更快。 提前将宏编译为Wasm,可以节省该宏的所有下游用户的时间,他们不必自己编译宏逻辑或其依赖项。
  • 隔离性。 Watt是100%安全的代码,具有零依赖性。在此环境中代码运行时,宏与外部世界的唯一可能的交互限于话费token和生成token。不管宏本身可能包含多少不安全代码!由于Rust编译器或标准库中存在模块错误,因此宏除了随机播放令牌外不可能做任何其他事情。
  • 确定性。 从系统构建的角度来看,由Wasm支持的宏具有以下优点:可以将其视为从输入到输出的纯粹确定性函数。隐式依赖(例如通过文件系统)是不存在的,构建系统对隐式依赖不可见或不考虑隐式依赖。

详细信息前往GitHub查看

使Tokio调度程序快10倍的方法

调度程序的作用是调度工作。一个应用程序被分解为多个工作单元,我们将它们称为任务。当任务可以进展时,它是可运行的;而在外部资源上被阻塞时,该任务将不可可运行(或空闲)。任务是独立的,因为任何数量的可运行任务都可以同时执行。调度程序负责在运行状态下执行任务,直到它们过渡回空闲状态为止。执行任务意味着需要为任务分配CPU时间(一种全局资源)。

有许多不同的建模调度程序的方法,每种方法各有利弊。

Tokio的第一个工作窃取调度程序于2018年三月问世,这是基于许多前者不正确的假设的首次尝试。

有关Tokio的更多信息前往官方博客查看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RxRust v0.3更新发布
    • 更新前:
      • 更新后:
      • Watt:由wasm支持的proc宏(概念验证),编译时间几乎为零
      • 使Tokio调度程序快10倍的方法
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档