[email protected] | 6b28d94 | 2012-02-15 01:43:19 | [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_ | ||||
[email protected] | 6b28d94 | 2012-02-15 01:43:19 | [diff] [blame] | 7 | |
8 | #include "base/base_export.h" | ||||
[email protected] | fb44196 | 2013-05-08 05:35:24 | [diff] [blame] | 9 | #include "base/sequenced_task_runner.h" |
[email protected] | 6b28d94 | 2012-02-15 01:43:19 | [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 | ||||
[email protected] | 8367dc11 | 2013-04-06 07:09:33 | [diff] [blame] | 16 | // there is a specific need to run tasks on only a single thread. |
[email protected] | 6b28d94 | 2012-02-15 01:43:19 | [diff] [blame] | 17 | // |
[email protected] | 8367dc11 | 2013-04-06 07:09:33 | [diff] [blame] | 18 | // SingleThreadTaskRunner implementations might: |
skyostil | 054861d | 2015-04-30 19:06:15 | [diff] [blame] | 19 | // - Post tasks to an existing thread's MessageLoop (see |
20 | // MessageLoop::task_runner()). | ||||
[email protected] | 8367dc11 | 2013-04-06 07:09:33 | [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. | ||||
[email protected] | 6b28d94 | 2012-02-15 01:43:19 | [diff] [blame] | 25 | class BASE_EXPORT SingleThreadTaskRunner : public SequencedTaskRunner { |
[email protected] | f2ebbf06 | 2012-04-06 03:14:30 | [diff] [blame] | 26 | public: |
Yeol | a89b266 | 2017-07-25 17:09:10 | [diff] [blame] | 27 | // A more explicit alias to RunsTasksInCurrentSequence(). |
28 | bool BelongsToCurrentThread() const { return RunsTasksInCurrentSequence(); } | ||||
[email protected] | f2ebbf06 | 2012-04-06 03:14:30 | [diff] [blame] | 29 | |
30 | protected: | ||||
Chris Watkins | 091d629 | 2017-12-13 04:25:58 | [diff] [blame] | 31 | ~SingleThreadTaskRunner() override = default; |
[email protected] | 6b28d94 | 2012-02-15 01:43:19 | [diff] [blame] | 32 | }; |
33 | |||||
34 | } // namespace base | ||||
35 | |||||
[email protected] | a8582b1 | 2012-12-19 22:18:29 | [diff] [blame] | 36 | #endif // BASE_SINGLE_THREAD_TASK_RUNNER_H_ |