On Fri, 06 Jun 2008 01:59:36 +0200 Emmanuel Lecharny <[EMAIL PROTECTED]> wrote:
> Hi guys,
>
> I may be wrong, or tired, but while looking at the DefaultIoFuture
> class (trunk), I discovered that the public IoFuture
> awaitUninterruptibly() method is using a lock to protect a boolean
> flag (ready), which will never change, because the only place where
> this flag is modified is also protected by the same lock :
>
> public IoFuture awaitUninterruptibly() {
> synchronized (lock) {
> while (!ready) {
> waiters++;
> try {
> lock.wait(DEAD_LOCK_CHECK_INTERVAL);
> } catch (InterruptedException e) {
> } finally {
> waiters--;
> if (!ready) {
> checkDeadLock();
> }
> }
> }
> }
>
> return this;
> }
>
>
> ...
>
> protected void setValue(Object newValue) {
> synchronized (lock) {
> // Allow only once.
> if (ready) {
> return;
> }
>
> result = newValue;
> ready = true;
> if (waiters > 0) {
> lock.notifyAll();
> }
> }
>
> notifyListeners();
> }
>
> Do I need extra sleep ???
>
> btw, is the name 'awaitUninterruptibly' sounds correct to any US
> native ?
>
> Thanks !
>
Hi,
As non us native it's sounding just pretty long to type ;)
I would like to precise we accept UK native comments too until it's not
about rugby :)
For the lock I think it's something related to this fancy deadlock
checking, but I understand shit at this code too. I'll need more time
for that I think.
Julien
signature.asc
Description: PGP signature
