cooptex提供了无死锁互斥器(deadlock-freeMutexes)。
[CoopMutex::lock]方法将[std::sync::Mutex]的返回值封装成Result结果,该结果将要求调用者放弃其他持有的锁,以便另一个线程可以取得进展。这种行为可以通过使用[retry_loop]函数轻松实现。
示例代码
usecooptex::*;leta=CoopMutex::new(42);letb=CoopMutex::new(43);retry_loop(||{leta_lock=a.lock()?.unwrap();letb_lock=b.lock()?.unwrap();assert_eq!(*a_lock+*b_lock,85);Ok(())});
评论