37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
// Copyright 2018 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef BASE_TASK_THREAD_POOL_SERVICE_THREAD_H_
|
|
#define BASE_TASK_THREAD_POOL_SERVICE_THREAD_H_
|
|
|
|
#include "base/base_export.h"
|
|
#include "base/threading/thread.h"
|
|
|
|
namespace base {
|
|
namespace internal {
|
|
|
|
// The ThreadPool's ServiceThread is a mostly idle thread that is responsible
|
|
// for handling async events (e.g. delayed tasks and async I/O). Its role is to
|
|
// merely forward such events to their destination (hence staying mostly idle
|
|
// and highly responsive).
|
|
// It aliases Thread::Run() to enforce that ServiceThread::Run() be on the stack
|
|
// and make it easier to identify the service thread in stack traces.
|
|
class BASE_EXPORT ServiceThread : public Thread {
|
|
public:
|
|
ServiceThread();
|
|
|
|
ServiceThread(const ServiceThread&) = delete;
|
|
ServiceThread& operator=(const ServiceThread&) = delete;
|
|
~ServiceThread() override = default;
|
|
|
|
private:
|
|
// Thread:
|
|
void Run(RunLoop* run_loop) override;
|
|
};
|
|
|
|
} // namespace internal
|
|
} // namespace base
|
|
|
|
#endif // BASE_TASK_THREAD_POOL_SERVICE_THREAD_H_
|