futex 0.1.3

Linux futex-based lock implementations.
Documentation
#![allow(deprecated)]
extern crate libc;
extern crate futex;

use futex::raw::RwLock;
use std::thread;
use std::sync::Arc;

fn main() {
    println!("lul");
    let futex = Arc::new(RwLock::new());
    let futex2 = futex.clone();
    futex.acquire_read();
    futex.acquire_read();
    futex.acquire_read();
    let thread = thread::spawn(move || {
        futex2.acquire_read();
        println!("thread reader");
        thread::sleep_ms(100);
        futex2.release_read();
        futex2.acquire_write();
        println!("thread writer");
        thread::sleep_ms(100);
        futex2.release_write();
        thread::sleep_ms(100);
        futex2.acquire_read();
        println!("thread reader 2");
        thread::sleep_ms(100);
        futex2.release_read();
    });
    thread::sleep_ms(100);
    futex.release_read();
    futex.release_read();
    println!("last reader going down");
    thread::sleep_ms(100);
    futex.release_read();
    thread::sleep_ms(100);
    futex.acquire_write();
    println!("main writer");
    thread::sleep_ms(100);
    futex.release_write();
    thread.join().unwrap();
    println!("done");
}