Rust 原子引用计数

原子引用计数Arc<T>

把Rc改成Arc就可以实现线程之间共享数据。


use std::thread;
use std::sync::Mutex;
use std::sync::Arc;
use std::time;
fn main() {
    // 

    // let counter=Mutex::new(12);
    let counter=Arc::new(Mutex::new(12));

    // let another=counter;

    // println!("{:?}",counter);

    let mut threadRes=vec![];
    for i in 0..10{
        // 定义线程的闭包
        let counter=Arc::clone(&counter);

        let handle=thread::spawn(move ||{
            // 获取互斥量
            {

                let mut num=counter.lock().unwrap();
                *num+=1;
                println!("{:?}",i);
                thread::sleep(time::Duration::from_millis(10));
                thread::sleep(time::Duration::from_millis(10));

                println!("{:?}",i);

            }
            // thread::sleep(time::Duration::from_millis(10));

            // println!("{:?}",i);
            // 不用执行unlock,离开作用域之后,自动释放锁
    });
        threadRes.push(handle);
    }
    for handle in threadRes{
        handle.join();
    }

    println!("{:?}",counter.lock().unwrap());

    // for i in 0..10{
    //     threadRes[i].join();
    // }
    println!("Hello, world!");
}

SendSync的trait

这一部分明天再学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值