Rust 程式設計視訊教程(進階)——018_1 互斥器介紹

linghuyichong發表於2020-02-08

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

github地址:https://github.com/anonymousGiga/learn_rus...

1、任何程式語言中的通道都類似於單所有權的方式,即一旦一個值傳送到通道中,(傳送者)將無法再使用這個值;而共享記憶體就類似於多所有權,即多個執行緒可以同時訪問相同的記憶體位置。

2、互斥器
(1)作用:任意時刻,只允許一個執行緒訪問某些資料;
(2)互斥器的使用:使用前需要獲取鎖;使用後需要解鎖資料。

3、Rust中互斥器API:Mutex

use std::sync::Mutex;
fn main() {
    let m = Mutex::new(5);
    {
        let mut num = m.lock().unwrap();
        *num = 6;
    } //離開作用域,Mutex<T>的鎖會自動釋放
    println!("m = {:?}", m);
}

說明:
(1)Mutex是一個智慧指標,更準確的說,lock呼叫返回一個叫做MutexGuard的智慧指標;
(2)內部提供了Drop方法,實現當MutexGuard離開作用域時自動釋放鎖。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章