diff options
Diffstat (limited to 'deps/v8/src/libplatform/default-background-task-runner.cc')
-rw-r--r-- | deps/v8/src/libplatform/default-background-task-runner.cc | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/deps/v8/src/libplatform/default-background-task-runner.cc b/deps/v8/src/libplatform/default-background-task-runner.cc new file mode 100644 index 0000000000..b556b6c3fe --- /dev/null +++ b/deps/v8/src/libplatform/default-background-task-runner.cc @@ -0,0 +1,59 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "src/libplatform/default-background-task-runner.h" + +#include "src/base/platform/mutex.h" +#include "src/libplatform/worker-thread.h" + +namespace v8 { +namespace platform { + +DefaultBackgroundTaskRunner::DefaultBackgroundTaskRunner( + uint32_t thread_pool_size) { + for (uint32_t i = 0; i < thread_pool_size; ++i) { + thread_pool_.push_back(base::make_unique<WorkerThread>(&queue_)); + } +} + +DefaultBackgroundTaskRunner::~DefaultBackgroundTaskRunner() { + // This destructor is needed because we have unique_ptr to the WorkerThreads, + // und the {WorkerThread} class is forward declared in the header file. +} + +void DefaultBackgroundTaskRunner::Terminate() { + base::LockGuard<base::Mutex> guard(&lock_); + terminated_ = true; + queue_.Terminate(); + // Clearing the thread pool lets all worker threads join. + thread_pool_.clear(); +} + +void DefaultBackgroundTaskRunner::PostTask(std::unique_ptr<Task> task) { + base::LockGuard<base::Mutex> guard(&lock_); + if (terminated_) return; + queue_.Append(std::move(task)); +} + +void DefaultBackgroundTaskRunner::PostDelayedTask(std::unique_ptr<Task> task, + double delay_in_seconds) { + base::LockGuard<base::Mutex> guard(&lock_); + if (terminated_) return; + // There is no use case for this function on a background thread at the + // moment, but it is still part of the interface. + UNIMPLEMENTED(); +} + +void DefaultBackgroundTaskRunner::PostIdleTask(std::unique_ptr<IdleTask> task) { + // There are no idle background tasks. + UNREACHABLE(); +} + +bool DefaultBackgroundTaskRunner::IdleTasksEnabled() { + // There are no idle background tasks. + return false; +} + +} // namespace platform +} // namespace v8 |