Home | History | Annotate | Download | only in base
      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_
      7 
      8 #include "base/base_export.h"
      9 #include "base/sequenced_task_runner.h"
     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
     16 // there is a specific need to run tasks on only a single thread.
     17 //
     18 // SingleThreadTaskRunner implementations might:
     19 //   - Post tasks to an existing thread's MessageLoop (see
     20 //     MessageLoop::task_runner()).
     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.
     25 class BASE_EXPORT SingleThreadTaskRunner : public SequencedTaskRunner {
     26  public:
     27   // A more explicit alias to RunsTasksOnCurrentThread().
     28   bool BelongsToCurrentThread() const {
     29     return RunsTasksOnCurrentThread();
     30   }
     31 
     32  protected:
     33   ~SingleThreadTaskRunner() override {}
     34 };
     35 
     36 }  // namespace base
     37 
     38 #endif  // BASE_SINGLE_THREAD_TASK_RUNNER_H_
     39