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

php网站建设全程实例淄博网站开发找网泰

php网站建设全程实例,淄博网站开发找网泰,wordpress 短网址插件,wordpress中文4.8.1tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢#xff1f;这次我们来聊聊这个话题。 首先我们先写一段简单的多任务程序。 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 OS4 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.zqtcl.cn/news/203903/

相关文章:

  • 产品推广网站模板哪里有做网站的素材
  • 网站界面要素村网站开设两学一做栏目
  • 临沂免费模板建站河北邢台手机网站建设
  • 企业网站栏目规划的重要性wordpress改变为中文
  • 云服务器怎么上传网站个人建一个网站多少钱
  • 东莞网站建设包装制品flash网站制作
  • 办网站怎么赚钱做二手电脑的网站
  • 大型电子商务网站建设成本旅游网站前台怎么做
  • 深圳网站建设..网站点击图片放大
  • 上海企业扶持政策洛阳400电话洛阳网站seo
  • 保亭县住房城市建设局网站app免费制作平台下载
  • 抚州市建设局网站在网站做商城平台需要哪些资质
  • 潍坊专业网站建设多少钱素马设计官网
  • 深圳网站建设 套餐近期新闻事件
  • 网站开发外包维护合同淘宝客源码程序 爱淘宝风格+程序自动采集商品 淘宝客网站模板
  • 烟台企业网站开发军事新闻最新24小时
  • wordpress网站更换域名网站空间建站
  • 十堰网站建设公司电话网页设计与制作教程江西高校出版社
  • 英文网站seo常州建设局考试网站
  • wordpress 多网站哈尔滨 建网站
  • 免费网站源代码怎么制作网站教程
  • Thinkphp开发wordpress网站怎么优化seo
  • tp框架做视频网站站长统计芭乐鸭脖小猪
  • asp网站发布ftp国内f型网页布局的网站
  • 无限空间 网站四川省建设厅网站填报获奖
  • 广东佛山最新通知北京seo怎么优化
  • 浙江省通信管理局 网站备案 管理部门科技公司经营范围包括哪些
  • 网站域名备案转接入手续深圳外贸公司qc招聘
  • 湖北网站建设服务公司可以做产品推广的网站
  • 做经营性的网站备案条件wordpress删除菜单