blob: e0b75a9a753ad1169a16cea9cbb2de6c9295131e [file] [log] [blame]
license.botbf09a502008-08-24 00:55:551// Copyright (c) 2006-2008 The Chromium 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.
initial.commitd7cae122008-07-26 21:49:384
5#ifndef BASE_WORKER_POOL_H_
6#define BASE_WORKER_POOL_H_
[email protected]32b76ef2010-07-26 23:08:247#pragma once
initial.commitd7cae122008-07-26 21:49:388
[email protected]43a973a2008-07-30 04:38:389#include "base/tracked.h"
10
11class Task;
initial.commitd7cae122008-07-26 21:49:3812
13// This is a facility that runs tasks that don't require a specific thread or
14// a message loop.
[email protected]6c710ee2010-05-07 07:51:1615//
16// WARNING: This shouldn't be used unless absolutely necessary. We don't wait
17// for the worker pool threads to finish on shutdown, so the tasks running
18// inside the pool must be extremely careful about other objects they access
19// (MessageLoops, Singletons, etc). During shutdown these object may no longer
20// exist.
initial.commitd7cae122008-07-26 21:49:3821class WorkerPool {
22 public:
[email protected]43a973a2008-07-30 04:38:3823 // This function posts |task| to run on a worker thread. |task_is_slow|
24 // should be used for tasks that will take a long time to execute. Returns
25 // false if |task| could not be posted to a worker thread. Regardless of
26 // return value, ownership of |task| is transferred to the worker pool.
27 static bool PostTask(const tracked_objects::Location& from_here,
28 Task* task, bool task_is_slow);
initial.commitd7cae122008-07-26 21:49:3829};
30
31#endif // BASE_WORKER_POOL_H_