diff options
Diffstat (limited to 'nptl/sysdeps/pthread/pthread_barrier_wait.c')
-rw-r--r-- | nptl/sysdeps/pthread/pthread_barrier_wait.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/nptl/sysdeps/pthread/pthread_barrier_wait.c b/nptl/sysdeps/pthread/pthread_barrier_wait.c index f0f65b05c7..aa5b42d419 100644 --- a/nptl/sysdeps/pthread/pthread_barrier_wait.c +++ b/nptl/sysdeps/pthread/pthread_barrier_wait.c @@ -55,17 +55,13 @@ pthread_barrier_wait (barrier) /* The number of the event we are waiting for. The barrier's event number must be bumped before we continue. */ unsigned int event = ibarrier->curr_event; - do - { - /* Before suspending, make the barrier available to others. */ - lll_unlock (ibarrier->lock); - /* Wait for the event counter of the barrier to change. */ - lll_futex_wait (&ibarrier->curr_event, event); + /* Before suspending, make the barrier available to others. */ + lll_unlock (ibarrier->lock); - /* We are going to access shared data. */ - lll_lock (ibarrier->lock); - } + /* Wait for the event counter of the barrier to change. */ + do + lll_futex_wait (&ibarrier->curr_event, event); while (event == ibarrier->curr_event); } |