#semaphore #counter #blocking #counting #extracted #block #atomic

std-semaphore

A counting, blocking sempahore extracted from rust 1.7.0

1 unstable release

Uses old Rust 2015

0.1.0 Jul 15, 2016

#958 in Concurrency

Download history 482/week @ 2024-07-24 329/week @ 2024-07-31 577/week @ 2024-08-07 410/week @ 2024-08-14 511/week @ 2024-08-21 516/week @ 2024-08-28 515/week @ 2024-09-04 514/week @ 2024-09-11 634/week @ 2024-09-18 595/week @ 2024-09-25 494/week @ 2024-10-02 344/week @ 2024-10-09 696/week @ 2024-10-16 514/week @ 2024-10-23 555/week @ 2024-10-30 364/week @ 2024-11-06

2,219 downloads per month
Used in 11 crates (6 directly)

MIT/Apache

8KB
118 lines

std-semaphore

Build Status

Documentation (master)

A counting, blocking semaphore extracted from rust 1.7.0.

Semaphores are a form of atomic counter where access is only granted if the counter is a positive value. Each acquisition will block the calling thread until the counter is positive, and each release will increment the counter and unblock any threads if necessary.

Usage

Add this to your Cargo.toml:

[dependencies]
std-semaphore = "0.1"

and this to your crate root:

extern crate std_semaphore;

Examples

use std_semaphore::Semaphore;

// Create a semaphore that represents 5 resources
let sem = Semaphore::new(5);

// Acquire one of the resources
sem.acquire();

// Acquire one of the resources for a limited period of time
{
    let _guard = sem.access();
    // ...
} // resources is released here

// Release our initially acquired resource
sem.release();

License

Unless otherwise noted, all code, tests, and docs are © 2014 The Rust Project Developers and dual-licensed under the Apache 2.0 and MIT licenses. See the copyright declaration at the top of src/lib.rs for more.

No runtime deps