From 729928e79412a160f8192e27d25dfe8f30d6984f Mon Sep 17 00:00:00 2001 From: Yedidya Feldblum Date: Fri, 19 Jan 2018 11:47:48 -0800 Subject: [PATCH] Use MemoryIdler in SaturatingSemaphore Summary: [Folly] Use `MemoryIdler` in `SaturatingSemaphore`. As is used in `Baton`. And merge the two invocations of `futexWait` and `futexWaitUntil` - `futexWaitUntil` also tests for the max-deadline internally. Reviewed By: djwatson Differential Revision: D6720045 fbshipit-source-id: a48187a6c866dbf99bb5c7283e0288b939bef2e5 --- folly/synchronization/SaturatingSemaphore.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/folly/synchronization/SaturatingSemaphore.h b/folly/synchronization/SaturatingSemaphore.h index 8d40b850..bc0eba65 100644 --- a/folly/synchronization/SaturatingSemaphore.h +++ b/folly/synchronization/SaturatingSemaphore.h @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -304,11 +305,7 @@ FOLLY_NOINLINE bool SaturatingSemaphore::tryWaitSlow( continue; } } - if (deadline == std::chrono::time_point::max()) { - state_.futexWait(BLOCKED); - } else { - state_.futexWaitUntil(BLOCKED, deadline); - } + detail::MemoryIdler::futexWaitUntil(state_, BLOCKED, deadline); } } asm_volatile_pause(); -- 2.34.1