# 并发安全与内存管理

URL: https://caijiao.org/rust/06-concurrency/03-memory-safety
Source: docs/rust/06-concurrency/03-memory-safety.md
Description: Rust 通过所有权系统、借用规则及线程安全原语，确保并发编程中的内存安全，避免数据竞争和死锁。

Rust 在并发环境中保证内存安全，利用类型系统防止数据竞争和资源冲突。

## 数据竞争与内存安全

数据竞争是两个或多个线程同时访问同一内存位置且至少一个为写操作。Rust 的所有权和借用规则在编译期避免这类问题。

## 线程安全的类型

- `Send` trait：表示类型可以安全地在线程间传递。
- `Sync` trait：表示类型的引用可以安全地在多线程间共享。

## 使用 `Mutex` 和 `Arc` 共享状态

通过互斥锁 `Mutex` 保护共享数据，原子引用计数 `Arc` 共享所有权：

```rust
use std::sync::{Arc, Mutex};
use std::thread;

fn main() {
    let counter = Arc::new(Mutex::new(0));
    let mut handles = vec![];

    for _ in 0..10 {
        let counter = Arc::clone(&counter);
        let handle = thread::spawn(move || {
            let mut num = counter.lock().unwrap();
            *num += 1;
        });
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }

    println!("计数器最终值: {}", *counter.lock().unwrap());
}
```

## 内存管理

Rust 通过所有权和生命周期管理内存，无需垃圾回收，确保高性能和安全。

## 代码演示

Rust Playground 示例代码
