Hello,
Am 31.07.2008 um 11:56 schrieb Florian Klaempfl:
Vinzent Höfler schrieb:
-------- Original-Nachricht -------
OTOH, it's looks about the same as in Java and even Java now has
explicit Locks, because "synchronized" simply isn't efficient nor
flexible enough... ;)
Since I don't use java, what's the difference to locks?
In practice imo not too much, synchronized is just a convenience
functionality, exactly like the one you proposed.
In short the difference:
Java always locks on monitors i.e. guards which are available for any
object; Pre 1.5 the only way to lock was using some syntax additions.
The syntax allows per method (class or instance) or per block scope,
i.e.
synchronized void doSomething() { ... } // method level: monitor
object is either "this" or this.class object
void doSomething() {
...
synchronized (monitor) { // on block level; monitor object is
"this" if not specified otherwise the given object
}
...
}
With 1.5 they added a "Lock" interface which provides the usual lock
()/trylock()/unlock() methods which should be self-explaining.
This for example allows interlocked locks if required
lock1.lock();
...
lock2.lock();
...
lock1.unlock();
...
lock2.unlock();
Hth,
Thomas_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel