Event

represents an event. Clients of an event are suspended while waiting for the event to be "signaled".

Implemented using pthread_mutex and pthread_condition on Posix and CreateEvent and SetEvent on Windows.

1 import core.sync.event, core.thread, std.file;
2 
3 struct ProcessFile
4 {
5     ThreadGroup group;
6     Event event;
7     void[] buffer;
8 
9     void doProcess()
10     {
11         event.wait();
12         // process buffer
13     }
14 
15     void process(string filename)
16     {
17         event.initialize(true, false);
18         group = new ThreadGroup;
19         for (int i = 0; i < 10; ++i)
20             group.create(&doProcess);
21 
22         buffer = std.file.read(filename);
23         event.set();
24         group.joinAll();
25         event.terminate();
26     }
27 }
struct Event {
version(Windows)
HANDLE m_event;
version(Posix)
pthread_mutex_t m_mutex;
version(Posix)
pthread_cond_t m_cond;
version(Posix)
bool m_initalized;
version(Posix)
bool m_state;
version(Posix)
bool m_manualReset;
}

Constructors

this
this(bool manualReset, bool initialState)

Creates an event object.

Destructor

A destructor is present on this object, but not explicitly documented in the source.

Postblit

A postblit is present on this object, but not explicitly documented in the source.

Members

Functions

initialize
void initialize(bool manualReset, bool initialState)

Initializes an event object. Does nothing if the event is already initialized.

reset
void reset()

Reset the event manually

set
void set()

Set the event to "signaled", so that waiting clients are resumed

terminate
void terminate()

* deinitialize event. Does nothing if the event is not initialized. There must not be * threads currently waiting for the event to be signaled.

wait
bool wait()

Wait for the event to be signaled without timeout.

wait
bool wait(Duration tmout)

Wait for the event to be signaled with timeout.

Suggestion Box / Bug Report