190dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org// Copyright 2013 the V8 project authors. All rights reserved.
23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be
33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file.
490dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
5ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org#ifndef V8_LIBPLATFORM_WORKER_THREAD_H_
6ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org#define V8_LIBPLATFORM_WORKER_THREAD_H_
790dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
8ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org#include <queue>
9ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org
10196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/base/macros.h"
115de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org#include "src/base/platform/platform.h"
1290dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
1390dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.orgnamespace v8 {
14ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org
155de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.orgnamespace platform {
1690dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
17ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.orgclass TaskQueue;
18ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org
195de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.orgclass WorkerThread : public base::Thread {
2090dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org public:
21ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org  explicit WorkerThread(TaskQueue* queue);
22ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org  virtual ~WorkerThread();
2390dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
24ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org  // Thread implementation.
25ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org  virtual void Run() OVERRIDE;
2690dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
2790dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org private:
28ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org  friend class QuitTask;
29ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org
30ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org  TaskQueue* queue_;
3190dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
32ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org  DISALLOW_COPY_AND_ASSIGN(WorkerThread);
33ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org};
3490dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
355de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org} }  // namespace v8::platform
3690dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
3790dca01eac542464c29011d239bf18f26e0b8f00machenbach@chromium.org
38ea9b8ba58955b7efcc3e1550dd33a44fb4530136hpayer@chromium.org#endif  // V8_LIBPLATFORM_WORKER_THREAD_H_
39