fmutex
Mutual exclusion across processes on a file descriptor or path.
- On Unix-like systems this is implemented use
flock(2)
. - On Windows this is implemented using
LockFileEx
.
🚀 Getting started
First fmutex
to your Cargo manifest.
Now use one of the provided functions to lock a file descriptor (Unix) or handle (Windows) or a file path.
lock()
to acquire a lock on a file descriptor or handle.try_lock()
to attempt to acquire a lock on a file descriptor or handle.lock_path()
to acquire a lock on a file path.try_lock_path()
to attempt to acquire a lock on a file path.
🤸 Usage
lock()
let fd = new.create.write.open?;
// <-- `_guard` dropped here and the lock is released
try_lock()
let fd = new.create.write.open?;
match try_lock?
lock_path()
let path = "path/to/my/file.txt";
// <-- `_guard` dropped here and the lock is released
try_lock_path()
let path = "path/to/my/file.txt";
match try_lock_path?
License
This project is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT for details.