OSDN Git Service

Revert "Revert "Reduce sleep duration in SuspendAllDaemonThreads""
authorMathieu Chartier <mathieuc@google.com>
Thu, 7 Jan 2016 17:31:33 +0000 (09:31 -0800)
committerMathieu Chartier <mathieuc@google.com>
Sat, 9 Jan 2016 00:28:46 +0000 (16:28 -0800)
Fixed the error where I reduced the time until the warning by 10x.

Bug: 26351700

This reverts commit bc34a7ed232cb3d384c250578e2b4ede45f2b167.

Change-Id: I6b30a0711fe077421665b78c39ded88899407700

runtime/thread_list.cc

index 43ee848..ae18819 100644 (file)
@@ -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());