#同步 #sync #构造

monitor

监控器同步构造

4 个版本

使用旧的 Rust 2015

0.1.0 2016年7月3日
0.0.3 2015年9月12日
0.0.2 2015年9月12日
0.0.1 2015年9月12日

#16 in #构造

Download history 225/week @ 2024-03-13 174/week @ 2024-03-20 150/week @ 2024-03-27 172/week @ 2024-04-03 247/week @ 2024-04-10 216/week @ 2024-04-17 259/week @ 2024-04-24 234/week @ 2024-05-01 212/week @ 2024-05-08 224/week @ 2024-05-15 214/week @ 2024-05-22 225/week @ 2024-05-29 178/week @ 2024-06-05 195/week @ 2024-06-12 237/week @ 2024-06-19 172/week @ 2024-06-26

821 每月下载量
5 个crate中使用 (3 直接使用)

自定义许可

15KB
339

monitor_rs

一个方便的库,提供了在Rust中使用Mutex+Condvar组合的更简单方式。这个概念被称为监控器同步构造,类似于Java的synchronized()语句。

许可:MIT

用法

在您的 Cargo.toml 中添加以下内容

[dependencies]
monitor = "0.1.0"

并在您的crate根目录下添加以下内容

extern crate monitor;

示例

extern crate monitor;

use std::time::Duration;
use std::sync::Arc;
use std::thread;
use monitor::Monitor;

fn main() {
    let mon = Arc::new(Monitor::new(false));
    {
        let mon = mon.clone();
        let _ = thread::spawn(move || {
            thread::sleep(Duration::from_millis(1000));
            
            mon.with_lock(|mut done| {     // done is a monitor::MonitorGuard<bool>
                *done = true;
                done.notify_one();
            });
        });
    }
    
    mon.with_lock(|mut done| {
        while !*done {
            done.wait();
        }
        println!("finished waiting");
    });
}

更多示例,请参阅lib.rs中的测试。

无运行时依赖