• Home
Name Date Size #Lines LOC

..--

src/04-Jul-2025-460309

.android-checksum.jsonD04-Jul-20251.1 KiB11

.cargo-checksum.jsonD04-Jul-2025815 11

Android.bpD04-Jul-2025960 3834

CHANGELOG.mdD04-Jul-20251.2 KiB4126

Cargo.tomlD04-Jul-20251.4 KiB6555

LICENSED04-Jul-20251 KiB2217

METADATAD04-Jul-2025406 1817

MODULE_LICENSE_MITD04-Jul-20250

README.mdD04-Jul-20251.2 KiB4430

cargo_embargo.jsonD04-Jul-202551 44

rustfmt.tomlD04-Jul-202561 43

README.md

1# named-lock
2
3[![license][license badge]][license]
4[![crates.io][crate badge]][crate]
5[![docs][docs badge]][docs]
6
7This crate provides a simple and cross-platform implementation of named locks.
8You can use this to lock sections between processes.
9
10## Example
11
12```rust
13use named_lock::NamedLock;
14use named_lock::Result;
15
16fn main() -> Result<()> {
17    let lock = NamedLock::create("foobar")?;
18    let _guard = lock.lock()?;
19
20    // Do something...
21
22    Ok(())
23}
24```
25
26## Implementation
27
28On UNIX this is implemented by using files and [`flock`]. The path of the
29created lock file will be `$TMPDIR/<name>.lock`, or `/tmp/<name>.lock` if
30`TMPDIR` environment variable is not set.
31
32On Windows this is implemented by creating named mutex with [`CreateMutexW`].
33
34
35[license]: LICENSE
36[license badge]: https://img.shields.io/github/license/oblique/named-lock
37[crate]: https://crates.io/crates/named-lock
38[crate badge]: https://img.shields.io/crates/v/named-lock
39[docs]: https://docs.rs/named-lock
40[docs badge]: https://docs.rs/named-lock/badge.svg
41
42[`flock`]: https://linux.die.net/man/2/flock
43[`CreateMutexW`]: https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createmutexw
44