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();
}


Reply via email to