`

rust mutex

    博客分类:
  • rust
 
阅读更多
use std::sync::{Arc,Mutex};
use std::thread::spawn;

#[test]
pub fn mutex(){
    let m = Mutex::new(5);
    {
        let mut num = m.lock().unwrap();
        *num = 6;
    }
    println!("m:{:?}",m);

    let counter = Arc::new(Mutex::new(0));
    let mut handles = vec![];

    for i in 0..10 {
        let counter = Arc::clone(&counter);
        let handle = spawn(move || {
            let mut num = counter.lock().unwrap();
            *num = *num + 1;
        });
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }
    println!("counter:{:?}",counter);
}


m:Mutex { data: 6, poisoned: false, .. }
counter:Mutex { data: 10, poisoned: false, .. }

分享到:
评论

相关推荐

    Rust代码和资源的整理清单汇总-全网最全,快速精通rust

    7. **并发编程**:Rust的并发模型基于所有权和线程局部状态,通过通道、Mutex(互斥锁)和Arc(原子引用计数)等工具,安全地实现了多线程和异步编程。 8. **标准库**:Rust的标准库提供了许多核心功能,包括I/O、...

    Rust语言入门教程&代码示例.pdf

    - **互斥锁**:通过 Mutex 来保护共享资源。 - **原子操作**:原子类型提供了线程安全的共享数据方法。 #### 五、Rust 语言网络编程 - **TCP 和 UDP 套接字**:利用 `std::net` 模块进行网络通信。 - **HTTP ...

    Rust语言入门教程-学习Rust的基础语法、案例示例和进阶内容

    - 通过内置的同步原语(如Mutex)和通道(channel),Rust能够安全地实现多线程编程。 - 例如,使用`std::thread::spawn`创建新线程。 3. **宏** - Rust中的宏允许在编译时生成代码,用于元编程和代码重用。 - ...

    rust网络编程中文及源码

    6. **多线程与并发**:Rust的并发模型基于通道和共享内存,通过`std::sync`和`std::thread`库,你可以创建和管理线程,使用`Arc`和`Mutex`等同步原语保证数据一致性。 7. **中间件和框架**:对于构建复杂的Web应用...

    rust官方教程(中文).zip

    12. **并发编程**:Rust的并发模型基于轻量级线程(`std::thread`)和共享数据的所有权,使用`Arc`(原子引用计数)和`Mutex`(互斥锁)等同步原语保证线程安全。 13. **测试**:Rust提供了内置的测试框架,可以...

    Rust container cheat sheet.pdf

    - parking_lot:指出了一个避免使用传统Rust标准库中Mutex的第三方库,该库不进行原始互斥锁的分配,以减少内存开销。 最后,文档中还提及了Rust中的一些其他重要概念,包括: - T: Sized:表示类型T在编译时有已知...

    Rust 程序设计语言(2018)中文

    它提供了多种并发机制,包括线程、消息传递(`mpsc`通道)、共享状态(使用`Mutex`或`RwLock`),以及无畏并发的概念。 ### 面向对象编程特性 Rust的面向对象编程特性比较独特,它没有传统意义上的类,但可以通过...

    雪花算法rust版本_代码_下载

    通过阅读和理解snowflake-rs的源码,我们可以学习到Rust的并发控制(如使用`Mutex`或`AtomicU64`进行线程安全操作)、模块化设计以及如何实现高效的时间戳处理。此外,通过对比不同语言版本的雪花算法实现,还可以...

    rust中文教程第二版

    `Mutex`、`Arc`(原子智能指针)等同步原语帮助开发者构建高效的并发解决方案。 9. **Cargo**:Rust 的构建工具和包管理器,负责管理依赖、构建项目和运行测试。 10. **标准库**:Rust 标准库提供了丰富的基础功能...

    Mastering Rust(pdf+epub+mobi+code_files).zip

    其独特的并发原语如Arc(原子引用计数)和Mutex(互斥锁)为编写高效并发程序提供了便利。 4. **零成本抽象**:Rust允许开发者创建高性能的抽象,但这些抽象并不会带来运行时的开销。这意味着开发者可以在保持性能...

    个人Rust学习提纲.zip

    3. 原子操作与锁:理解atomic类型和mutex、rwlock等同步原语,用于实现并发安全的数据共享。 五、宏与元编程 1. 宏系统:探索Rust的宏定义,理解macro_rules!语法。 2. 自动化属性:学习derive宏,如derive(Debug...

    Rust 语言 Rust 是一种系统编程语言,注重安全、性能和并发性 以下是 Rust 语言的一些关键特点: 内存安全 通过严

    - **安全的并行编程**:通过使用高级抽象,如`Arc`(原子引用计数)和`Mutex`(互斥锁),Rust 使得编写并行代码变得更加简单和安全。 #### 3. 性能高效 - **媲美 C 和 C++ 的性能**:Rust 的设计目标之一是提供与 ...

    Rust 全面指南:从基础到高级,一网打尽 Rust 的编程知识

    Rust通过通道(Channel)和锁(Mutex/Lock)等机制支持并发编程。通道提供了一种线程间安全的数据交换机制,而锁则用于同步访问共享资源。Rust的独特之处在于其所有权和借用机制,这使得开发者能够编写更安全的并发...

    parking_lot:用于Rust的紧凑高效的同步原语。 还提供了用于创建自定义同步原语的API

    停车场 该库提供了Mutex , RwLock , Condvar和Once ,这些实现比Rust标准库中的实现更小,更快,更灵活,还提供了支持递归锁定的ReentrantMutex类型。 它还公开了用于创建您自己的有效同步原语的低级API。 在x86_...

    Rust语言资料和学习笔记.zip

    并发性:Rust 提供了原生的并发支持,如无锁数据结构(如 Arc 和 Mutex)和通道(Channels),使得并发编程变得相对简单且线程安全。 表演模式(Pattern Matching):Rust 使用模式匹配来实现强大的类型系统,帮助...

    Rust 个人实战练习小项目

    `std::sync` 和 `std::thread` 模块提供了线程和同步原语,如互斥锁(Mutex)、信号量(Semaphore)和原子操作(Atomic)。 6. **宏与元编程**: Rust 支持宏定义,允许在编译时进行代码生成。宏可以用来创建...

    RustChinaConf2020-14.赖智超-《Rust异步和并发浅谈》.pdf

    在更复杂的同步操作中,如互斥锁(Mutex),Rust提供了原子操作来尝试修改数据,以确保在并发环境下的线程安全。这种方式允许在异步任务间安全地共享和保护资源。 总的来说,赖智超的演讲详细阐述了Rust如何通过其...

    rust如何快速上手.zip

    `Arc`(Atomic Reference Counting)和`Mutex`(互斥锁)等同步原语帮助你处理共享数据。 十、宏与元编程 Rust的宏系统允许在编译时进行代码生成,提高了效率和灵活性。`macro_rules!`用于定义简单的词法宏,而`...

    Rust语言学习教程及示例代码

    Rust是一种系统级编程语言,注重安全、速度和并发性。这个“Rust语言学习教程及示例代码”压缩包提供了全面的学习资源,帮助你掌握Rust编程的基础和高级概念。 1. **语言基础** - **变量与类型**:Rust支持静态...

Global site tag (gtag.js) - Google Analytics