diff options
| -rw-r--r-- | runtime/thread_list.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/runtime/thread_list.cc b/runtime/thread_list.cc index 43ee84839b..ae18819e90 100644 --- a/runtime/thread_list.cc +++ b/runtime/thread_list.cc @@ -1161,8 +1161,9 @@ void ThreadList::SuspendAllDaemonThreadsForShutdown() { } // Give the threads a chance to suspend, complaining if they're slow. bool have_complained = false; - for (int i = 0; i < 10; ++i) { - usleep(200 * 1000); + static constexpr size_t kTimeoutMicroseconds = 2000 * 1000; + static constexpr size_t kSleepMicroseconds = 1000; + for (size_t i = 0; i < kTimeoutMicroseconds / kSleepMicroseconds; ++i) { bool all_suspended = true; for (const auto& thread : list_) { if (thread != self && thread->GetState() == kRunnable) { @@ -1176,8 +1177,9 @@ void ThreadList::SuspendAllDaemonThreadsForShutdown() { if (all_suspended) { return; } + usleep(kSleepMicroseconds); } - LOG(ERROR) << "suspend all daemons failed"; + LOG(WARNING) << "timed out suspending all daemon threads"; } void ThreadList::Register(Thread* self) { DCHECK_EQ(self, Thread::Current()); |