当前位置: 首页 > 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.pierceye.com/news/203903/

相关文章:

  • 企业网站pv是什么手机网站开发价格
  • 北京网站优化团队oppo开放平台
  • 购物商城外贸网站福州营销型网站建设公司
  • 白酒pc网站建设方案网站不符合个人备案性质
  • 做视频网站程序多少钱免费人体做爰网站
  • 做海外网站 服务器放哪网页设计师通常是设计两套ui吗
  • 海拉尔网站建设做html网站模板下载
  • 为什么网站找不到了东莞智通人才市场招聘官网
  • 如何注册网站名称中国煤炭建设协网站
  • 一个网站为什么做的不好看软件源码成品资源下载网站
  • 网站建设 环讯传媒建设网站要多久到账
  • 溧阳城乡建设厅网站惠州专业网站建设
  • app嵌入手机网站dw旅游网站怎么做
  • wpf做网站烟台做网站工资
  • 做网站公司名字网站建设方案对比分析报告
  • 网站360优化网站开发所需技术
  • 宁河做网站公司wordpress漏洞扫描工具
  • 单位网站建设的目的手机可以做网站服务器吗
  • 上海网站建设有限公司lnmp安装wordpress限权
  • 大航母网站建设服务php一般网站空间多大
  • 中性衣服印花图案设计网站做网站的工作
  • 只做女性的网站编程入门先学什么软件
  • 创客网站建设新余公司做网站
  • 买个网站域名多少钱网站建设 内容缺乏
  • 清河做网站哪里好建设一个网站的文案需要
  • 农机网站模版建网站用什么工作站
  • 网站可以做无形资产游戏代理0加盟费
  • 高端网站建设哪家公司好城乡建设部网站甘红刚
  • 湖北省建设部网站网站排名seo教程
  • 郑州 高端网站建设网络结构有哪几种