libsnooze

A wait/notify mechanism for D

---

[![D](https://github.com/deavmi/libsnooze/actions/workflows/d.yml/badge.svg)](https://github.com/deavmi/libsnooze/actions/workflows/d.yml) ## API To see the full documentation (which is always up-to-date) check it out on [DUB](https://libsnooze.dpldocs.info/). ## Usage ### Importing issues Currently importing just with `import libsnooze` is broken, we recommend you import as follows: ```d import libsnooze.clib; import libsnooze; ``` Which should build! ### Example Firstly we create an `Event` which is something that can be notified or awaited on. This is simply accomplished as follows: ```d Event myEvent = new Event(); ``` Now let's create a thread which consumes `myEvent` and waits on it: ```d class TestThread : Thread { private Event event; this(Event event) { super(&worker); this.event = event; } public void worker() { writeln("("~to!(string)(Thread.getThis().id())~") Thread is waiting..."); event.wait(); writeln("("~to!(string)(Thread.getThis().id())~") Thread is waiting... [done]"); } } TestThread thread1 = new TestThread(event); thread1.start(); ``` Now on the main thread we can do the following to wakeup waiting threads: ```d /* Wake up all sleeping on this event */ event.notifyAll(); ```