Dzwebs.Net

撰写电脑技术杂文十余年

rust多线程中的全局变量AtomicUsize计数的使用

Admin | 2023-1-19 13:36:09 | 被阅次数 | 60

温馨提示!

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

  在rust多线程中,如果要使用全局变量,比如统计设备连接数,可不能使用一般的公有变量,而是应该使用原子数。

  下面是方法,请多指教:

  首先,在main之前进行定义:

  //使用原子来计数:变量MYUSERCOUNT记录当前连接的设备数量
  use std::sync::atomic::AtomicUsize;
  use std::sync::atomic::Ordering;
  static MYUSERCOUNT: AtomicUsize = AtomicUsize::new(0);

  上述代码中,我使用的变量名称是:MYUSERCOUNT,通过new(0)给其赋值一个初始值为0

  接着,可以在多线程代码中,对该变量进行加或减的操作:

  MYUSERCOUNT.fetch_add(1, Ordering::SeqCst);//使用原子来计数,加1
  println!("当前已连接的设备数:{:?}",MYUSERCOUNT);

  MYUSERCOUNT.fetch_sub(1, Ordering::SeqCst);//使用原子来计数,减1
  println!("当前已连接的设备数:{:?}",MYUSERCOUNT);

  注意哦,fetch_add加的函数,fetch_sub这个是减的函数。


网站备案号:

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

版权属性:

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

联系方式:

Email:dzwebs@126.com QQ:83539231