I am mostly concerned about this logic in block() which makes us
susceptible to spurious wake-ups.

            if (i == prev) {
                break;
            }

Anyone comments?

On Thu, Apr 21, 2016 at 5:23 PM, Venkateswara Rao Jujjuri <[email protected]
> wrote:

> LedgerHandle sync interface heavily depends on SyncCounter to convert
> async interfaces
> into sync interfaces.
>
> Usaylly
>
> SyncCounter.inc()
> asyncCall()
> SyncCOunter.block(0)
>
> The block code is.
>
>    synchronized void block(int limit) throws InterruptedException {
>         while (i > limit) {
>             int prev = i;
>             wait();
>             if (i == prev) {
>                 break;
>             }
>         }
>     }
>
> Since 'i' is going to be same as 'prev' on spurious wakeup, and wait() can
> return
> on spurious wakeups, aren't we susceptible? or I am missing something here?
>
> How about replacing SyncCounter with CountDownLatch.
> If we agree, I can raise a ticket.
>
> --
> Jvrao
> ---
> First they ignore you, then they laugh at you, then they fight you, then
> you win. - Mahatma Gandhi
>
>
>


-- 
Jvrao
---
First they ignore you, then they laugh at you, then they fight you, then
you win. - Mahatma Gandhi

Reply via email to