Class core.sync.Mutex has shared and non-shared versions of its methods. This is logical — mutex is shared between threads. But class core.sync.Condition doesn't have shared methods at all. Why? Maybe I missed something, but it's very strange for me, because such code doesn't work:


---

class Foo {

    private Mutex mtx;

    private Condition cnd;


    shared this() {

        mtx = new Mutex(this); // error: no constructor Mutex(shared Object)

        cnd = new Condition(mtx); // error: no constructor Condition(shared Mutex)

    }

}

---


Please enlighten me)