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

一、通道相似於單全部權的方式,值傳遞到通道後,發送者就沒法再使用這個值;
二、共享內存相似於多全部權,即多個線程能夠同時訪問相同的內存位置。
互斥器:mutex
一、任意時刻,只容許一個線程來訪問某些數據;
二、互斥器使用時,須要先獲取到鎖,使用後須要釋放鎖。
Mutex<T>

例子:git

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.rsgithub

相關文章
相關標籤/搜索