License
Distributed under the
Boost Software License 1.0. (See accompanying file LICENSE)
The event module provides a primitive for lightweight signaling of other threads (emulating Windows events on Posix)
Boost Software License 1.0. (See accompanying file LICENSE)
pthread_mutex and pthread_condition on Posix andCreateEvent and SetEvent on Windows. import core.sync.event, core.thread, std.file;
struct ProcessFile
{
ThreadGroup group;
Event event;
void[] buffer;
void doProcess()
{
event.wait();
// process buffer
}
void process(string filename)
{
event.initialize(true, false);
group = new ThreadGroup;
for (int i = 0; i < 10; ++i)
group.create(&doProcess);
buffer = std.file.read(filename);
event.setIfInitialized();
group.joinAll();
event.terminate();
}
}void initialize(bool manualReset, bool initialState) nothrow @nogcInitializes an event object. Does nothing if the event is already initialized.void terminate() nothrow @nogcdeinitialize event. Does nothing if the event is not initialized. There must not be threads currently waiting for the event to be signaled.void setIfInitialized() nothrow @nogcSet the event to "signaled", so that waiting clients are resumedthis(bool manualReset, bool initialState)Creates an event object.