| Crates.io | hybridfutex |
| lib.rs | hybridfutex |
| version | 0.1.0 |
| created_at | 2023-04-07 13:05:59.549863+00 |
| updated_at | 2023-04-07 13:05:59.549863+00 |
| description | An efficient hybrid wait queue futex designed for high-contention scenarios, supporting both synchronous and asynchronous waiting and notification. It supports notify and notify_many on all targets. |
| homepage | |
| repository | https://github.com/fereidani/hybridfutex |
| max_upload_size | |
| id | 832918 |
| size | 21,147 |
HybridFutex is a Rust library that provides a synchronization primitive that allows threads to wait for a notification from another thread. It is designed to be low-overhead and scalable and supports both synchronous and asynchronous waiting and notification.
To use HybridFutex, simply add it as a dependency in your Cargo.toml file:
[dependencies]
hybrid-futex = "0.1"
Then, you can use HybridFutex in your Rust code as follows:
use std::sync::Arc;
use std::thread;
use std::time::Duration;
use hybridfutex::HybridFutex;
let wait_queue = Arc::new(HybridFutex::new());
let wait_queue_clone = wait_queue.clone();
// Spawn a thread that waits for a notification from another thread
let handle = thread::spawn(move || {
println!("Thread 1 is waiting");
wait_queue_clone.wait_sync();
println!("Thread 1 is notified");
});
// Wait for a short time before notifying the other thread
thread::sleep(Duration::from_millis(100));
// Notify the other thread
wait_queue.notify_one();
// Wait for the other thread to finish
handle.join().unwrap();
This project is licensed under the MIT License - see the LICENSE file for details.