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