< prev index next >
src/hotspot/os/linux/waitBarrier_linux.cpp
Print this page
rev 53078 : 8214271: Fast primitive to wake many threads
Reviewed-by:
rev 53079 : [mq]: fix-sema
*** 47,64 ****
assert(_futex_barrier == 0, "Already armed");
_futex_barrier = barrier_tag;
OrderAccess::fence();
}
! void LinuxWaitBarrier::disarm() {
assert(_futex_barrier != 0, "Not armed");
_futex_barrier = 0;
- OrderAccess::fence();
- }
-
- void LinuxWaitBarrier::wake() {
- assert(_futex_barrier == 0, "Not disarmed");
int s = futex(&_futex_barrier,
FUTEX_WAKE_PRIVATE,
INT_MAX /* wake a max of this many threads */);
guarantee_with_errno(s > -1, "futex FUTEX_WAKE");
}
--- 47,59 ----
assert(_futex_barrier == 0, "Already armed");
_futex_barrier = barrier_tag;
OrderAccess::fence();
}
! void LinuxWaitBarrier::wake() {
assert(_futex_barrier != 0, "Not armed");
_futex_barrier = 0;
int s = futex(&_futex_barrier,
FUTEX_WAKE_PRIVATE,
INT_MAX /* wake a max of this many threads */);
guarantee_with_errno(s > -1, "futex FUTEX_WAKE");
}
< prev index next >