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

常用网站开发软件6企业网站建立意义何在

常用网站开发软件6,企业网站建立意义何在,郑州外贸网站建设及维护,网站与后台rust引用-借用机制还是有限制的#xff0c;比如我们要在多次函数调用中修改参数、跨线程传递参数并发修改的场景#xff0c;单纯使用引用-借用机制就不灵了#xff08;这种场景和引用-借用设计思想是冲突的#xff09;。这时需要借助rust提供的Rc、Arc、Cell、RefCell对机制…    rust引用-借用机制还是有限制的比如我们要在多次函数调用中修改参数、跨线程传递参数并发修改的场景单纯使用引用-借用机制就不灵了这种场景和引用-借用设计思想是冲突的。这时需要借助rust提供的Rc、Arc、Cell、RefCell对机制来扩展默认的引用借用机制。 慢慢品味std库里提供的很多实现都是围绕引用-借用机制展开的默认的引用-借用机制适合80%的场景20%的场景还是需要额外的机制来扩展的引入额外的性能开销可能其中的15%可以通过优化设计避免。 1、线程内 use std::rc::Rc; use std::cell::RefCell;fn main() {println!(Hello, world!);let mut param Param::default();param.name xiao ming.to_string();let rc_param Rc::new(param);//Rc自带引用计数可clone多个传给给函数作为参数超出作用域引用计数减一至零是自动销毁//Rc不能跨线程要跨线程使用需要改为ArcMutexlet rc1 rc_param.clone();let rc2 rc_param.clone();let rc3 rc_param.clone();println!({}, rc1.name);new_value_fn1(rc2);new_value_fn2(rc3);//如果要在函数中修改参数的值需要使用RcRecCelllet mut param2 Param::default();param2.name 小红.to_string();let rc_refcell_param Rc::new(RefCell::new(param2));let rc_rec_p1 rc_refcell_param.clone();let rc_rec_p2 rc_refcell_param.clone();new_value_refcell_fn1(rc_rec_p1);new_value_refcell_fn2(rc_rec_p2);println!({}, rc_refcell_param.borrow().name); //小红-fn1-fn2 }fn new_value_fn1(param: RcParam){println!(from fn1: {}, param.name);//不让修改这能引用//param.is_valid false; } fn new_value_fn2(param: RcParam){println!(from fn2: {}, param.name); }fn new_value_refcell_fn1(param: RcRefCellParam){let mut p param.borrow_mut();let new_name p.name.clone() -fn1;p.name new_name;p.is_valid true; }fn new_value_refcell_fn2(param: RcRefCellParam){let mut p param.borrow_mut();let new_name p.name.clone() -fn2;p.name new_name; }struct Param{name: String,age: i32,is_valid: bool, }impl Default for Param{fn default () - Self{Self{name: .to_string(),age: 20,is_valid: true,}} } 2、跨线程 use std::thread::spawn; use std::sync::Arc;let mut thread_p1 Param::default();thread_p1.name String::from(thread param);let t1 spawn(move ||{println!(in sub thread t1:{}, thread_p1.name);});//变量thread_p1因为有非Copy类型String只能在一个线程闭包内使用如果开启线程2编译报错//let t2 spawn(move ||{// println!(in sub thread t2:{}, thread_p1.name);//});t1.join().unwrap();//t2.join().unwrap(); 我们定义一个变量要在多个线程闭包内使用需要引入Arc let mut thread_p1 Param::default();thread_p1.name String::from(thread param);let thread_param Arc::new(thread_p1);let thread1_param thread_param.clone();//clone一个跨线程的引用计数变量给线程1用let thread2_param thread_param.clone();//clone一个跨线程的引用计数变量给线程2用let t1 spawn(move ||{println!(in sub thread t1:{}, thread1_param.name);});let t2 spawn(move ||{println!(in sub thread t2:{}, thread2_param.name);});t1.join().unwrap();t2.join().unwrap(); 如果我们还要在线程内修改变量则需要Mutex介入 let mut thread_p1 Param::default();thread_p1.name String::from(thread param);let thread_param Arc::new(Mutex::new(thread_p1));//创建跨线程传递的可读性对象let thread1_param thread_param.clone();//clone一个给线程1用let thread2_param thread_param.clone();//clone一个给线程2用let t1 spawn(move ||{let mut v1 thread1_param.lock().unwrap();//线程1使用thread1_param先调用lock获取对象在作用域内是独占的其他线程不能并行使用v1.name v1.name.clone() __ t1;println!(in sub thread t1:{}, v1.name);});let t2 spawn(move ||{let mut v2 thread2_param.lock().unwrap();//线程2使用thread2_param先调用lock获取对象在作用域内是独占的其他线程不能并行使用v2.name v2.name.clone() __ t2;println!(in sub thread t2:{}, v2.name);});t1.join().unwrap();t2.join().unwrap();let v3 thread_param.lock().unwrap();//验证两个子线程执行情况 p.name is thread param__t2__t1println!(p.name is {}, v3.name); 抛开执行开销至少其他语言可做的事情rust也可做到了理论上可以平行翻译其他语言实现的模块实现。
http://www.hkea.cn/news/14446658/

相关文章:

  • 苏州网站建设软件收费关于网站建设管理的通知
  • 网站建设的美图网店推广方法和技巧
  • seo点击排名软件哪家好网站建设和网络优化请示
  • ppt做的最好的网站四川平昌县建设局网站
  • 南宁网站制作定制如何用ftp登陆网站
  • 福州网站设计哪家好网站开发用盗版犯法
  • 成都网络推广网站奉贤网站建设推广
  • 专业建设标准搜易网优化的效果如何
  • 济南专业做网站公司哪家好南昌制作网站的公司吗
  • 纯静态网站开发如何在别人的网站模板上加兼容
  • 网站域名快速备案大连 找人做网站
  • asp.net网站开发教程 pdf做技能培训和那个网站合作好
  • 辽宁建设工程信息网官方网站大连白云小学网站建设
  • 上海民政网站相关建设情况网络 设计
  • 模板网站有哪几类电子商务网站平台建设目标
  • 常州企业网站建设价格网站开发与应用就业方向
  • 佛山网站建设seo优化如何恢复wordpress
  • 刷粉网站推广免费编程软件下载
  • 济南网站制作公司排名国外域名 网站备案
  • 工信部网站 备案时间成都自适应网站建设
  • 如何做vip电影解析网站网站建设哪种好
  • 如何创建一个站点wordpress 评论栏
  • 简洁企业网站源码手机版网站如何建设
  • sns网站开发企信查
  • seo网站推广是什么网站怎么优化到首页
  • 吐鲁番网站建设建筑学院官网
  • 北京康迪建设监理咨询有限公司网站6江门网站推广深圳公司
  • 重庆璧山网站制作公司推荐做p2p网站费用
  • 树莓派上怎么做网站视频制作软件排行榜
  • c2c网站设计茅台酒国内营销网络