Add dummy alert param to thread_ctrl::wait API

This commit is contained in:
Nekotekina 2019-10-06 13:30:56 +03:00
parent 86fb2993ad
commit 8031180373
3 changed files with 9 additions and 9 deletions

View file

@ -1777,7 +1777,7 @@ void thread_base::finalize() noexcept
--g_thread_count; --g_thread_count;
} }
void thread_ctrl::_wait_for(u64 usec) void thread_ctrl::_wait_for(u64 usec, bool alert /* true */)
{ {
auto _this = g_tls_this_thread; auto _this = g_tls_this_thread;

View file

@ -188,7 +188,7 @@ class thread_ctrl final
static atomic_t<native_core_arrangement> g_native_core_layout; static atomic_t<native_core_arrangement> g_native_core_layout;
// Internal waiting function, may throw. Infinite value is -1. // Internal waiting function, may throw. Infinite value is -1.
static void _wait_for(u64 usec); static void _wait_for(u64 usec, bool alert);
friend class thread_base; friend class thread_base;
@ -238,15 +238,15 @@ public:
} }
// Wait once with timeout. May spuriously return false. // Wait once with timeout. May spuriously return false.
static inline void wait_for(u64 usec) static inline void wait_for(u64 usec, bool alert = true)
{ {
_wait_for(usec); _wait_for(usec, alert);
} }
// Wait. // Wait.
static inline void wait() static inline void wait()
{ {
_wait_for(-1); _wait_for(-1, true);
} }
// Wait until pred(). // Wait until pred().
@ -260,7 +260,7 @@ public:
return result; return result;
} }
_wait_for(-1); _wait_for(-1, true);
} }
} }

View file

@ -261,7 +261,7 @@ public:
if (g_cfg.core.sleep_timers_accuracy < (is_usleep ? sleep_timers_accuracy_level::_usleep : sleep_timers_accuracy_level::_all_timers)) if (g_cfg.core.sleep_timers_accuracy < (is_usleep ? sleep_timers_accuracy_level::_usleep : sleep_timers_accuracy_level::_all_timers))
{ {
thread_ctrl::wait_for(remaining); thread_ctrl::wait_for(remaining, !is_usleep);
} }
else else
{ {
@ -269,10 +269,10 @@ public:
{ {
#ifdef __linux__ #ifdef __linux__
// Do not wait for the last quantum to avoid loss of accuracy // Do not wait for the last quantum to avoid loss of accuracy
thread_ctrl::wait_for(remaining - ((remaining % host_min_quantum) + host_min_quantum)); thread_ctrl::wait_for(remaining - ((remaining % host_min_quantum) + host_min_quantum), !is_usleep);
#else #else
// Wait on multiple of min quantum for large durations to avoid overloading low thread cpus // Wait on multiple of min quantum for large durations to avoid overloading low thread cpus
thread_ctrl::wait_for(remaining - (remaining % host_min_quantum)); thread_ctrl::wait_for(remaining - (remaining % host_min_quantum), !is_usleep);
#endif #endif
} }
else else