On Sunday, 30 March 2014 at 16:09:37 UTC, Matt wrote:
I have little experience in multi-threading programming, and
was digging into std.concurrency, but I don't really understand
the Condition class as it was used there. Could someone provide
a bare-bones use of this class? I would be much obliged, thanks.
Simple example of sending signal from one thread to another.
import std.stdio;
import core.thread;
import core.sync.condition;
class Foo {
bool signal = false;
Condition condition;
this() {
condition = new Condition(new Mutex);
}
void sendSignal() {
writeln("sending signal");
synchronized(condition.mutex) {
signal = true;
condition.notify();
}
writeln("signal sent");
}
void waitForSignal() {
new Thread({
writeln("waiting for signal");
synchronized(condition.mutex) {
while(!signal) {
condition.wait();
}
}
writeln("signal received");
}).start();
}
}
void main() {
auto foo = new Foo;
foo.waitForSignal();
Thread.sleep(2.seconds);
foo.sendSignal();
}