Index: base/threading/platform_thread_internal_posix.cc |
diff --git a/base/threading/platform_thread_internal_posix.cc b/base/threading/platform_thread_internal_posix.cc |
index 9af02044fceed2635b4fc5bf1ee5e1a06927a6fe..378a24d0d1d8f9be8aed6da1b6a2dca7ce9dd641 100644 |
--- a/base/threading/platform_thread_internal_posix.cc |
+++ b/base/threading/platform_thread_internal_posix.cc |
@@ -4,6 +4,7 @@ |
#include "base/threading/platform_thread_internal_posix.h" |
+#include "base/containers/adapters.h" |
#include "base/logging.h" |
namespace base { |
@@ -11,8 +12,7 @@ namespace base { |
namespace internal { |
int ThreadPriorityToNiceValue(ThreadPriority priority) { |
- for (const ThreadPriorityToNiceValuePair& pair : |
- kThreadPriorityToNiceValueMap) { |
+ for (const auto& pair : kThreadPriorityToNiceValueMap) { |
if (pair.priority == priority) |
return pair.nice_value; |
} |
@@ -21,13 +21,17 @@ int ThreadPriorityToNiceValue(ThreadPriority priority) { |
} |
ThreadPriority NiceValueToThreadPriority(int nice_value) { |
- for (const ThreadPriorityToNiceValuePair& pair : |
- kThreadPriorityToNiceValueMap) { |
- if (pair.nice_value == nice_value) |
+ // Try to find a priority that best describes |nice_value|. If there isn't |
+ // an exact match, this method returns the closest priority whose nice value |
+ // is higher (lower priority) than |nice_value|. |
+ for (const auto& pair : Reversed(kThreadPriorityToNiceValueMap)) { |
+ if (pair.nice_value >= nice_value) |
return pair.priority; |
} |
- NOTREACHED() << "Unknown nice value"; |
- return ThreadPriority::NORMAL; |
+ |
+ // Reaching here means |nice_value| is more than any of the defined |
+ // priorities. The lowest priority is suitable in this case. |
+ return ThreadPriority::BACKGROUND; |
} |
} // namespace internal |