| // 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. | |
| #ifndef V8_LIBPLATFORM_DEFAULT_WORKER_THREADS_TASK_RUNNER_H_ | |
| #define V8_LIBPLATFORM_DEFAULT_WORKER_THREADS_TASK_RUNNER_H_ | |
| #include "include/v8-platform.h" | |
| #include "src/libplatform/task-queue.h" | |
| namespace v8 { | |
| namespace platform { | |
| class Thread; | |
| class WorkerThread; | |
| class V8_PLATFORM_EXPORT DefaultWorkerThreadsTaskRunner | |
| : public NON_EXPORTED_BASE(TaskRunner) { | |
| public: | |
| DefaultWorkerThreadsTaskRunner(uint32_t thread_pool_size); | |
| ~DefaultWorkerThreadsTaskRunner(); | |
| void Terminate(); | |
| // v8::TaskRunner implementation. | |
| void PostTask(std::unique_ptr<Task> task) override; | |
| void PostDelayedTask(std::unique_ptr<Task> task, | |
| double delay_in_seconds) override; | |
| void PostIdleTask(std::unique_ptr<IdleTask> task) override; | |
| bool IdleTasksEnabled() override; | |
| private: | |
| bool terminated_ = false; | |
| base::Mutex lock_; | |
| TaskQueue queue_; | |
| std::vector<std::unique_ptr<WorkerThread>> thread_pool_; | |
| }; | |
| } // namespace platform | |
| } // namespace v8 | |
| #endif // V8_LIBPLATFORM_DEFAULT_WORKER_THREADS_TASK_RUNNER_H_ |