akalin@chromium.org | 062f968 | 2012-02-15 10:43:19 +0900 | [diff] [blame] | 1 | // Copyright (c) 2012 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. |
| 4 | |
| 5 | #ifndef BASE_SINGLE_THREAD_TASK_RUNNER_H_ |
| 6 | #define BASE_SINGLE_THREAD_TASK_RUNNER_H_ |
akalin@chromium.org | 062f968 | 2012-02-15 10:43:19 +0900 | [diff] [blame] | 7 | |
| 8 | #include "base/base_export.h" |
dbeam@chromium.org | 36f6040 | 2013-05-08 14:35:24 +0900 | [diff] [blame] | 9 | #include "base/sequenced_task_runner.h" |
akalin@chromium.org | 062f968 | 2012-02-15 10:43:19 +0900 | [diff] [blame] | 10 | |
| 11 | namespace base { |
| 12 | |
| 13 | // A SingleThreadTaskRunner is a SequencedTaskRunner with one more |
| 14 | // guarantee; namely, that all tasks are run on a single dedicated |
| 15 | // thread. Most use cases require only a SequencedTaskRunner, unless |
wez@chromium.org | 5667e26 | 2013-04-06 16:09:33 +0900 | [diff] [blame] | 16 | // there is a specific need to run tasks on only a single thread. |
akalin@chromium.org | 062f968 | 2012-02-15 10:43:19 +0900 | [diff] [blame] | 17 | // |
wez@chromium.org | 5667e26 | 2013-04-06 16:09:33 +0900 | [diff] [blame] | 18 | // SingleThreadTaskRunner implementations might: |
skyostil | 97aefe1 | 2015-05-01 04:06:15 +0900 | [diff] [blame] | 19 | // - Post tasks to an existing thread's MessageLoop (see |
| 20 | // MessageLoop::task_runner()). |
wez@chromium.org | 5667e26 | 2013-04-06 16:09:33 +0900 | [diff] [blame] | 21 | // - Create their own worker thread and MessageLoop to post tasks to. |
| 22 | // - Add tasks to a FIFO and signal to a non-MessageLoop thread for them to |
| 23 | // be processed. This allows TaskRunner-oriented code run on threads |
| 24 | // running other kinds of message loop, e.g. Jingle threads. |
akalin@chromium.org | 062f968 | 2012-02-15 10:43:19 +0900 | [diff] [blame] | 25 | class BASE_EXPORT SingleThreadTaskRunner : public SequencedTaskRunner { |
rsleevi@chromium.org | d595b42 | 2012-04-06 12:14:30 +0900 | [diff] [blame] | 26 | public: |
akalin@chromium.org | 062f968 | 2012-02-15 10:43:19 +0900 | [diff] [blame] | 27 | // A more explicit alias to RunsTasksOnCurrentThread(). |
| 28 | bool BelongsToCurrentThread() const { |
| 29 | return RunsTasksOnCurrentThread(); |
| 30 | } |
rsleevi@chromium.org | d595b42 | 2012-04-06 12:14:30 +0900 | [diff] [blame] | 31 | |
| 32 | protected: |
dcheng | 7dc8df5 | 2014-10-21 19:54:51 +0900 | [diff] [blame] | 33 | ~SingleThreadTaskRunner() override {} |
akalin@chromium.org | 062f968 | 2012-02-15 10:43:19 +0900 | [diff] [blame] | 34 | }; |
| 35 | |
| 36 | } // namespace base |
| 37 | |
akalin@chromium.org | 1955a28 | 2012-12-20 07:18:29 +0900 | [diff] [blame] | 38 | #endif // BASE_SINGLE_THREAD_TASK_RUNNER_H_ |