# #等待 #定时器 #线程 #定时 #定时锁 #非定时锁

microlock

一个用于等待的crate:小型锁和其他定时功能!

3 个不稳定版本

0.2.1 2024年7月14日
0.2.0 2024年7月14日
0.1.0 2024年7月14日

#421并发

Download history 301/week @ 2024-07-13 9/week @ 2024-07-20 5/week @ 2024-07-27

每月315 次下载

MIT 许可证

15KB
299

microlock

微锁是一个用于等待的小型crate。它包含一个适用于复杂同步的无定时锁,以及一个也可以用作同步的定时锁,但还提供了定时器功能。

用例

无定时锁可以像通道一样使用,并增加了灵活性。在这个例子中,它简单地替换了通道,但与通道相比,更复杂的用例要简单得多。

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

use microlock::{Lock, TimedLock, UntimedLock};

fn main() {
    static LOCK: UntimedLock = UntimedLock::locked();
    let queue = Arc::new(Mutex::new(VecDeque::new()));
    let queue2 = queue.clone();
    thread::spawn(move || loop {
        LOCK.wait_here();
        println!("{}", queue2.lock().unwrap().pop_front().unwrap());
        LOCK.lock();
    });

    let timer = TimedLock::unlocked();
    for i in 0..5 {
        timer.lock_for_ms(100);
        println!("Sending {i}...");
        queue.lock().unwrap().push_back(format!("Hello! {i}"));
        LOCK.unlock();
        println!("Sent!");
        timer.wait_here();
    }
}

无运行时依赖