libsnooze 1.0.7-beta
A wait/notify mechanism for D
To use this package, run the following command in your project's root directory:
						Manual usage
						
						Put the following dependency into your project's dependences section:
					
<p align="center"> <img src="branding/logo.png" width=220> </p>
<h1 align="center">libsnooze</h1>
<h3 align="center"><i><b>A wait/notify mechanism for D</i></b></h3>
API
To see the full documentation (which is always up-to-date) check it out on DUB.
Usage
Importing issues
Currently importing just with import libsnooze is broken, we recommend you import as follows:
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:
Event myEvent = new Event();
Now let's create a thread which consumes myEvent and waits on it. You will see that we wrap some exception catching around the call to wait(). We have to catch an InterruptedException as a call to wait() can unblock due to a signal being received on the waiting thread, normally you would model yoru program looping back to call wait() again. Also, if there is a problem with the underlying eventing system then a FatalException will be thrown and you should handle this by exiting your program or something.
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...");
        try
        {
            /* Wait */
            event.wait();
            writeln("("~to!(string)(Thread.getThis().id())~") Thread is waiting... [done]");
        }
        catch(InterruptedException e)
        {
            // NOTE: You can maybe retry your wait here
            writeln("Had an interrupt");
        }
        catch(FatalException e)
        {
            // NOTE: This is a FATAL error in the underlying eventing system, do not continue
        }
    }
}
TestThread thread1 = new TestThread(event);
thread1.start();
Now on the main thread we can do the following to wakeup waiting threads:
/* Wake up all sleeping on this event */
event.notifyAll();
- 1.0.7-beta released 2 years ago
 - deavmi/libsnooze
 - LGPL v3.0
 - Copyright © 2023, Tristan B. Kildaire
 
- Authors:
 - Dependencies:
 - none
 - Versions:
 - 
						
Show all 55 versions1.3.0-beta 2023-Jun-29 1.2.3-beta 2023-Jun-29 1.2.2-beta 2023-Jun-26 1.2.1-beta 2023-Jun-26 1.2.0-beta 2023-Jun-24  - Download Stats:
 - 
						
- 
								
0 downloads today
 - 
								
0 downloads this week
 - 
								
3 downloads this month
 - 
								
424 downloads total
 
 - 
								
 - Score:
 - 0.0
 - Short URL:
 - libsnooze.dub.pm