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

百度 网站添加seo搜索引擎优化是通过优化答案

百度 网站添加,seo搜索引擎优化是通过优化答案,东莞网站快速排名提升,网站开发和网页制作tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢?这次我们来聊聊这个话题。 首先我们先写一段简单的多任务程序。 use tokio::runtime; pub fn main() {let rt runtime::Builder::new_mu…

tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢?这次我们来聊聊这个话题。

首先我们先写一段简单的多任务程序。

use tokio::runtime;
pub fn main() {let rt = runtime::Builder::new_multi_thread().enable_all().build().unwrap();rt.block_on(async {for i in 0..8 {println!("num {}", i);tokio::spawn(async move {loop {let mut sum: i32 = 0;for i in 0..100000000 {sum = sum.overflowing_add(i).0;}println!("sum {}", sum);}});}});
}

程序非常简单,首先构造一个 tokio runtime 环境,然后派生多个 tokio 并发,每个并发执行一个无限循环做 overflowing_add。overflowing_add 函数返回一个加法的元组以及一个表示是否会发生算术溢出的布尔值。如果会发生溢出,那么将返回包装好的值。然后取元祖的第一个元素打印。

这个程序运行在 Ubuntu 20 OS,4 core cpu。通过 nmon 的监控如下:

可以看到每个 core 都有负载。

要想把负载绑定在某一 core 上,需要使用 core_affinity_rs。core_affinity_rs 是一个用于管理 CPU 亲和力的 Rust crate。目前支持 Linux、Mac OSX 和 Windows。官方宣称支持多平台,本人只做了 linux 操作系统的测试。

我们把代码修改一下:

use tokio::runtime;pub fn main() {let core_ids = core_affinity::get_core_ids().unwrap();println!("core num {}", core_ids.len());let core_id = core_ids[1];let rt = runtime::Builder::new_multi_thread().on_thread_start(move || {core_affinity::set_for_current(core_id.clone());}).enable_all().build().unwrap();rt.block_on(async {for i in 0..8 {println!("num {}", i);tokio::spawn(async move { loop {let mut sum: i32 = 0;for i in 0..100000000 {sum = sum.overflowing_add(i).0;}println!("sum {}", sum);           }});}});
}

在构建多线程 runtime 时,在 on_thread_start 设置 cpu 亲和。可以看到负载被绑定到了指定的 core 上。

上面的代码只是把负载绑定到了一个 core 上,那么要绑定多个核怎么办呢?
我们看看下面的代码

pub fn main() {let core_ids = core_affinity::get_core_ids().unwrap();println!("core num {}", core_ids.len());let rt = runtime::Builder::new_multi_thread().enable_all().build().unwrap();let mut idx = 2;rt.block_on(async {for i in 0..8 {println!("num {}", i);let core_id = core_ids[idx];if idx.eq(&(core_ids.len() - 1)) {idx = 2;} else {idx += 1;}tokio::spawn(async move {let res = core_affinity::set_for_current(core_id);println!("{}", res);loop {let mut sum: i32 = 0;for i in 0..100000000 {sum = sum.overflowing_add(i).0;}println!("sum {}", sum);}});}});
}

代码需要把所有负载绑在 core3 和 core4 上。原理是在派生任务中加入 core_affinity 设置。通过调整 idx,将派生并发平均绑定在指定的 core 上。代码运行的监控如下图。

http://www.dinnco.com/news/31055.html

相关文章:

  • 触屏版网站源码常州网站推广公司
  • 网页设计与网站建设课程考试seo研究协会网
  • 哪些网站可以做移动端模板百度明星搜索量排行榜
  • 侵入别人的网站怎么做seo推广公司价格
  • 昆明市城市建设档案馆网站手机免费建站系统
  • 学做立体书的网站软文写作
  • 中央农村工作会议指出5g网络优化
  • 做ppt模板网站百度seo收录软件
  • wordpress怎么发布网站短视频营销的优势
  • 网站页面那个图怎么做免费下载百度
  • 做web网站需要做网络通信吗培训机构哪家好
  • 做网站优化要多少钱seo优化是什么
  • php动态网站开发的基本流程网页设计排版布局技巧
  • 广州网站建设品牌公司网站设计定制
  • 十大外贸网站企业网络营销成功案例
  • o2o网站建设新闻seo收录查询工具
  • 深圳高端网站建设网页设计网络推广都需要做什么
  • 网站搭建及应用教程百度新闻网页
  • 做网站程序看什么书电商运营模式
  • 网站开发详细设计编写网页的软件
  • 亚洲男女做暖网站做网站的外包公司
  • 免费试用网站制作seo职位描述
  • 类似一起做网店的网站百度竞价推广课程
  • 怎么做网站优化小吃培训去哪里学最好
  • ssm做网站推广平台开户代理
  • 北京做网站建设公司2022适合小学生的简短新闻摘抄
  • 遵义同城交友网站上海网站关键词排名
  • 淄博网站建设哪家便宜免费进入b站2022年更新
  • 网站开发详细报价外贸谷歌推广
  • wordpress站点标题隐藏域名注册信息