1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2013 the V8 project authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file.
4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/libplatform/worker-thread.h"
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "include/v8-platform.h"
8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/libplatform/task-queue.h"
9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace v8 {
11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace platform {
12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochWorkerThread::WorkerThread(TaskQueue* queue)
14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    : Thread(Options("V8 WorkerThread")), queue_(queue) {
15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Start();
16b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
18b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
19b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochWorkerThread::~WorkerThread() {
20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  Join();
21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
22b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
23b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid WorkerThread::Run() {
25b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  while (Task* task = queue_->GetNext()) {
26b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    task->Run();
27b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    delete task;
28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }
29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}
30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
31014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace platform
32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}  // namespace v8
33