Rust編程進階:049、互斥器介紹

1、通道類似於單所有權的方式,值傳遞到通道後,發送者就無法再使用這個值;
2、共享內存類似於多所有權,即多個線程可以同時訪問相同的內存位置。
互斥器:mutex
1、任意時刻,只允許一個線程來訪問某些數據;
2、互斥器使用時,需要先獲取到鎖,使用後需要釋放鎖。
Mutex<T>

例子:

use std::sync::Mutex;

fn main() {
    let m = Mutex::new(5);

    {
        let mut num = m.lock().unwrap(); // 獲取鎖
        *num = 6;
    } // 離開作用域時,自動釋放鎖

    println!("m = {:?}", m);
}

Mutex<T>是一個智能指針,lock調用返回一個叫做MutexGuard的智能指針
內部提供了drop方法,實現當MutexGuard離開作用域時自動釋放鎖。

本節全部源代碼:
https://github.com/anonymousGiga/learn_rust/blob/master/learn_thread3/src/main.rs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章