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

Attachment: signature.asc
Description: PGP signature

Reply via email to