Hi all, could someone explain us this "synchronize" behaviour? We do not understand it.
Two Threads. First Thread should wait for a condition. This we do in a synchronized(mutex) block. The second Thread broadcasts then a notify. This also in a synchronized block, synchronizing on the same mutex. This should be impossible!? Does the condition.wait modify the Mutex object so that it after this has another address? import tango.core.Thread; import tango.core.sync.Condition; import tango.core.sync.Mutex; import tango.io.Console; Object lock; Mutex mutex; Condition condition; void print(char[] msg) { synchronized (lock) { Cout(msg).newline; } } void produce() { while (true) { print("notify"); synchronized (mutex) { print("notify lock"); condition.notify; print("notify unlock"); } Thread.sleep(1.0); } } void consume() { while (true) { synchronized (mutex) { print("wait lock"); condition.wait; print("wait unlock"); } print("notified"); } } void main() { lock = new Object; mutex = new Mutex; condition = new Condition(mutex); (new Thread(&consume)).start; (new Thread(&produce)).start; } Output: wait lock notify notify lock notify unlock wait unlock notified ... best regards Stefan