Dzwebs.Net

撰写电脑技术杂文十余年

rust多线程全局变量之 lazy_static和Mutex的保存用户信息及状态

Admin | 2023-1-19 14:33:12 | 被阅次数 | 76

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  在rust多线程中,想使用全局变量,上一篇我们讲了原子的使用,本文,我们来讲讲 lazy_static和Mutex联合使用。我主要是利用这两个来保存已连接的设备的IP信息的。

  一、添加

  lazy_static = "1.4.0"

  二、在main之外或之前定义及初始化

  use std::sync::Mutex;
  use lazy_static::lazy_static;

  lazy_static! {
      static ref MYUSERSIP: Mutex<Vec<String>> = Mutex::new(Vec::new());
  }

  注意哦,全局变量名称是MYUSERSIP,,并且,数据类型为Mutex<Vec<String>>,初始化的时候给了一个空的内容Vec::new()

  三、在多线程中的具体使用

  println!("当前已连接的设备清单:{:?}",MYUSERSIP.lock().unwrap());//查看变量的长度。

  //比如,上述代码输出 ["127.0.0.1:57788", "127.0.0.1:57792"]

  let ip="127.0.0.1:57788";

  MYUSERSIP.lock().unwrap().push(String::from(&ip));//追加新内容或新元素

  MYUSERSIP.lock().unwrap().retain(|item| if *item == ip {false } else { true });//删除满足条件的原有元素

  最后再来一个遍历吧。

  for i in MYUSERSIP.lock().unwrap().iter() {
         println!("当前是设备名称是:{}", i);
   }

  值得注意的是,全局变量MYUSERSIP在使用之时候,一定要MYUSERSIP.lock().unwrap() 否则就出异常。


网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231