当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Mutex.lock用法及代码示例


本文简要介绍rust语言中 std::sync::Mutex.lock 的用法。

用法

pub fn lock(&self) -> LockResult<MutexGuard<'_, T>>

获取一个互斥体,阻塞当前线程,直到它能够这样做。

此函数将阻塞本地线程,直到它可以获取互斥体。返回时,线程是唯一持有锁的线程。返回一个 RAII 守卫以允许锁定的范围解锁。当守卫超出范围时,互斥锁将被解锁。

在已经持有锁的线程中锁定互斥锁的确切行为未指定。但是,此函数不会在第二次调用时返回(例如,它可能会出现Panics或死锁)。

错误

如果此互斥锁的另一个用户在持有互斥锁时发生Panics,则一旦获取互斥锁,此调用将返回错误。

Panics

如果当前线程已持有锁,则调用此函数时可能会出现紧急情况。

例子

use std::sync::{Arc, Mutex};
use std::thread;

let mutex = Arc::new(Mutex::new(0));
let c_mutex = Arc::clone(&mutex);

thread::spawn(move || {
    *c_mutex.lock().unwrap() = 10;
}).join().expect("thread::spawn failed");
assert_eq!(*mutex.lock().unwrap(), 10);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::sync::Mutex.lock。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。