Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2343)

Unified Diff: base/task_scheduler/task_scheduler.cc

Issue 2749303002: [reference - do not submit] Always create four pools in TaskSchedulerImpl. (Closed)
Patch Set: rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/task_scheduler/task_scheduler.h ('k') | base/task_scheduler/task_scheduler_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/task_scheduler/task_scheduler.cc
diff --git a/base/task_scheduler/task_scheduler.cc b/base/task_scheduler/task_scheduler.cc
index 592d6f4a15ecb97f79f890cbd66ee9001c82f596..7a323d63fc152222e30dc573e6e6af1efa2e0194 100644
--- a/base/task_scheduler/task_scheduler.cc
+++ b/base/task_scheduler/task_scheduler.cc
@@ -4,11 +4,8 @@
#include "base/task_scheduler/task_scheduler.h"
-#include <algorithm>
-
-#include "base/bind.h"
#include "base/logging.h"
-#include "base/sys_info.h"
+#include "base/task_scheduler/initialization_util.h"
#include "base/task_scheduler/scheduler_worker_pool_params.h"
#include "base/task_scheduler/task_scheduler_impl.h"
#include "base/threading/platform_thread.h"
@@ -23,29 +20,68 @@ TaskScheduler* g_task_scheduler = nullptr;
} // namespace
+TaskSchedulerInitParams::TaskSchedulerInitParams(
+ const SchedulerWorkerPoolParams& background_worker_pool_params_in,
+ const SchedulerWorkerPoolParams& background_blocking_worker_pool_params_in,
+ const SchedulerWorkerPoolParams& foreground_worker_pool_params_in,
+ const SchedulerWorkerPoolParams& foreground_blocking_worker_pool_params_in)
+ : background_worker_pool_params(background_worker_pool_params_in),
+ background_blocking_worker_pool_params(
+ background_blocking_worker_pool_params_in),
+ foreground_worker_pool_params(foreground_worker_pool_params_in),
+ foreground_blocking_worker_pool_params(
+ foreground_blocking_worker_pool_params_in) {}
+
+bool TaskSchedulerInitParams::IsValid() const {
+ return background_worker_pool_params.IsValid() &&
+ background_blocking_worker_pool_params.IsValid() &&
+ foreground_worker_pool_params.IsValid() &&
+ foreground_blocking_worker_pool_params.IsValid();
+}
+
#if !defined(OS_NACL)
// static
void TaskScheduler::CreateAndSetSimpleTaskScheduler(const std::string& name) {
- constexpr int kMinNumThreads = 1;
- std::vector<SchedulerWorkerPoolParams> worker_pool_params_vector;
- worker_pool_params_vector.emplace_back(
- name, ThreadPriority::NORMAL,
- SchedulerWorkerPoolParams::StandbyThreadPolicy::LAZY,
- std::max(kMinNumThreads, base::SysInfo::NumberOfProcessors()),
- TimeDelta::FromSeconds(30));
+ using StandbyThreadPolicy = SchedulerWorkerPoolParams::StandbyThreadPolicy;
+
+ constexpr TimeDelta kSuggestedReclaimTime = TimeDelta::FromSeconds(30);
+ constexpr int kMaxNumBackgroundThreads = 1;
+ constexpr int kMaxNumBackgroundBlockingThreads = 2;
+ constexpr int kMaxNumForegroundThreadsLowerBound = 2;
+ constexpr int kMaxNumForegroundThreadsUpperBound = 32;
+ constexpr double kMaxNumForegroundThreadsCoresMultiplier = 1;
+ constexpr int kMaxNumForegroundThreadsOffset = 0;
+ constexpr int kMaxNumForegroundBlockingThreadsLowerBound = 2;
+ constexpr int kMaxNumForegroundBlockingThreadsUpperBound = 64;
+ constexpr double kMaxNumForegroundBlockingThreadsCoresMultiplier = 2;
+ constexpr int kMaxNumForegroundBlockingThreadsOffset = 0;
+
CreateAndSetDefaultTaskScheduler(
- worker_pool_params_vector,
- Bind([](const TaskTraits&) -> size_t { return 0; }));
+ name, {{StandbyThreadPolicy::LAZY, kMaxNumBackgroundThreads,
+ kSuggestedReclaimTime},
+ {StandbyThreadPolicy::LAZY, kMaxNumBackgroundBlockingThreads,
+ kSuggestedReclaimTime},
+ {StandbyThreadPolicy::LAZY,
+ RecommendedMaxNumberOfThreadsInPool(
+ kMaxNumForegroundThreadsLowerBound,
+ kMaxNumForegroundThreadsUpperBound,
+ kMaxNumForegroundThreadsCoresMultiplier,
+ kMaxNumForegroundThreadsOffset),
+ kSuggestedReclaimTime},
+ {StandbyThreadPolicy::LAZY,
+ RecommendedMaxNumberOfThreadsInPool(
+ kMaxNumForegroundBlockingThreadsLowerBound,
+ kMaxNumForegroundBlockingThreadsUpperBound,
+ kMaxNumForegroundBlockingThreadsCoresMultiplier,
+ kMaxNumForegroundBlockingThreadsOffset),
+ kSuggestedReclaimTime}});
}
#endif // !defined(OS_NACL)
-// static
void TaskScheduler::CreateAndSetDefaultTaskScheduler(
- const std::vector<SchedulerWorkerPoolParams>& worker_pool_params_vector,
- const WorkerPoolIndexForTraitsCallback&
- worker_pool_index_for_traits_callback) {
- SetInstance(internal::TaskSchedulerImpl::Create(
- worker_pool_params_vector, worker_pool_index_for_traits_callback));
+ const std::string& name,
+ const TaskSchedulerInitParams& init_params) {
+ SetInstance(internal::TaskSchedulerImpl::Create(name, init_params));
}
// static
« no previous file with comments | « base/task_scheduler/task_scheduler.h ('k') | base/task_scheduler/task_scheduler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698