#mutex #timeout #lock

mutex-timeouts

一个简单的crate,允许您在互斥锁上指定超时。

4个版本 (2个重大更新)

0.3.0 2023年4月23日
0.2.0 2023年4月23日
0.1.1 2023年3月17日
0.1.0 2023年3月17日

#1165 in 并发

Apache-2.0

8KB
124

mutex-timeouts

一个极其简单的crate,允许您创建带有超时的互斥锁。
应该是 std::sync::Mutex 或 tokio::sync::Mutex 的几乎即插即用替代品;然而,您在创建互斥锁时需要指定超时持续时间。

use mutex_timeouts::std::MutexWithTimeout as Mutex;
use std::time::Duration;

let mutex = Mutex::new_with_timeout(0, Duration::from_secs(1));

// this will block for at most 1 second, and then return an error if the mutex is still locked
let _ = mutex.lock().unwrap();

// this will block for at most one second, but not return an error if the mutex is still locked
if let Some(guard) = mutex.try_lock().unwrap() {
    // do something with the guard
}

let mutex = Mutex::new(0); // same as above, but with a default timeout of 5 seconds

依赖项

~0–1.2MB
~20K SLoC