blob: 67f72cc691999109e9c4ecd966d972aabe6f86b0 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BASE_TASK_SCHEDULER_SCHEDULER_WORKER_POOL_PARAMS_H_
#define BASE_TASK_SCHEDULER_SCHEDULER_WORKER_POOL_PARAMS_H_
#include "base/task_scheduler/scheduler_worker_params.h"
#include "base/time/time.h"
namespace base {
class BASE_EXPORT SchedulerWorkerPoolParams final {
public:
enum class StandbyThreadPolicy {
// Create threads as needed on demand, reclaimed as necessary.
LAZY,
// When possible, keep one idle thread alive on standby, reclaimed as
// necessary.
ONE,
};
// Constructs a set of params used to initialize a pool. The pool will contain
// up to |max_threads|. |standby_thread_policy| indicates whether an idle
// thread should be kept alive on standby. |suggested_reclaim_time| sets a
// suggestion on when to reclaim idle threads. The pool is free to ignore this
// value for performance or correctness reasons. |backward_compatibility|
// indicates whether backward compatibility is enabled.
SchedulerWorkerPoolParams(
StandbyThreadPolicy standby_thread_policy,
int max_threads,
TimeDelta suggested_reclaim_time,
SchedulerBackwardCompatibility backward_compatibility =
SchedulerBackwardCompatibility::DISABLED);
SchedulerWorkerPoolParams(const SchedulerWorkerPoolParams& other);
SchedulerWorkerPoolParams& operator=(const SchedulerWorkerPoolParams& other);
StandbyThreadPolicy standby_thread_policy() const {
return standby_thread_policy_;
}
int max_threads() const { return max_threads_; }
TimeDelta suggested_reclaim_time() const { return suggested_reclaim_time_; }
SchedulerBackwardCompatibility backward_compatibility() const {
return backward_compatibility_;
}
private:
StandbyThreadPolicy standby_thread_policy_;
int max_threads_;
TimeDelta suggested_reclaim_time_;
SchedulerBackwardCompatibility backward_compatibility_;
};
} // namespace base
#endif // BASE_TASK_SCHEDULER_SCHEDULER_WORKER_POOL_PARAMS_H_