• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_LIBPLATFORM_DEFAULT_WORKER_THREADS_TASK_RUNNER_H_
6 #define V8_LIBPLATFORM_DEFAULT_WORKER_THREADS_TASK_RUNNER_H_
7 
8 #include "include/v8-platform.h"
9 #include "src/libplatform/task-queue.h"
10 
11 namespace v8 {
12 namespace platform {
13 
14 class Thread;
15 class WorkerThread;
16 
17 class V8_PLATFORM_EXPORT DefaultWorkerThreadsTaskRunner
NON_EXPORTED_BASE(TaskRunner)18     : public NON_EXPORTED_BASE(TaskRunner) {
19  public:
20   DefaultWorkerThreadsTaskRunner(uint32_t thread_pool_size);
21 
22   ~DefaultWorkerThreadsTaskRunner();
23 
24   void Terminate();
25 
26   // v8::TaskRunner implementation.
27   void PostTask(std::unique_ptr<Task> task) override;
28 
29   void PostDelayedTask(std::unique_ptr<Task> task,
30                        double delay_in_seconds) override;
31 
32   void PostIdleTask(std::unique_ptr<IdleTask> task) override;
33 
34   bool IdleTasksEnabled() override;
35 
36  private:
37   bool terminated_ = false;
38   base::Mutex lock_;
39   TaskQueue queue_;
40   std::vector<std::unique_ptr<WorkerThread>> thread_pool_;
41 };
42 
43 }  // namespace platform
44 }  // namespace v8
45 #endif  // V8_LIBPLATFORM_DEFAULT_WORKER_THREADS_TASK_RUNNER_H_
46