| // Copyright 2017 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BASE_TASK_THREAD_POOL_ENVIRONMENT_CONFIG_H_ |
| #define BASE_TASK_THREAD_POOL_ENVIRONMENT_CONFIG_H_ |
| |
| #include <stddef.h> |
| |
| #include "base/base_export.h" |
| #include "base/task/task_traits.h" |
| #include "base/threading/thread.h" |
| |
| namespace base { |
| namespace internal { |
| |
| // TODO(etiennep): This is now specific to |
| // PooledSingleThreadTaskRunnerManager, move it there. |
| enum EnvironmentType { |
| FOREGROUND = 0, |
| FOREGROUND_BLOCKING, |
| UTILITY, |
| UTILITY_BLOCKING, |
| BACKGROUND, |
| BACKGROUND_BLOCKING, |
| ENVIRONMENT_COUNT // Always last. |
| }; |
| |
| // Order must match the EnvironmentType enum. |
| struct EnvironmentParams { |
| // The threads and histograms of this environment will be labeled with |
| // the thread pool name concatenated to this. |
| const char* name_suffix; |
| |
| // Preferred type for threads in this environment; the actual thread type |
| // depends on shutdown state and platform capabilities. |
| ThreadType thread_type_hint; |
| }; |
| |
| constexpr EnvironmentParams kEnvironmentParams[] = { |
| {"Foreground", base::ThreadType::kDefault}, |
| {"ForegroundBlocking", base::ThreadType::kDefault}, |
| {"Utility", base::ThreadType::kUtility}, |
| {"UtilityBlocking", base::ThreadType::kUtility}, |
| {"Background", base::ThreadType::kBackground}, |
| {"BackgroundBlocking", base::ThreadType::kBackground}, |
| }; |
| |
| // Returns true if this platform supports having WorkerThreads running with a |
| // background thread type. |
| bool BASE_EXPORT CanUseBackgroundThreadTypeForWorkerThread(); |
| |
| // Returns true if this platform supports having WorkerThreads running with a |
| // utility thread type. |
| bool BASE_EXPORT CanUseUtilityThreadTypeForWorkerThread(); |
| |
| } // namespace internal |
| } // namespace base |
| |
| #endif // BASE_TASK_THREAD_POOL_ENVIRONMENT_CONFIG_H_ |