blob: 391b1d65f6c1774f0f5bd3be01080dc233042eea [file] [log] [blame]
Etienne Pierre-dorayb38e0fd2019-03-18 19:35:381// Copyright 2019 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
Gabriel Charette52fa3ae2019-04-15 21:44:375#ifndef BASE_TASK_THREAD_POOL_TASK_SOURCE_H_
6#define BASE_TASK_THREAD_POOL_TASK_SOURCE_H_
Etienne Pierre-dorayb38e0fd2019-03-18 19:35:387
8#include <stddef.h>
9
10#include "base/base_export.h"
Etienne Pierre-dorayf7f59c32019-05-24 16:50:5311#include "base/compiler_specific.h"
Etienne Pierre-dorayb38e0fd2019-03-18 19:35:3812#include "base/macros.h"
13#include "base/memory/ref_counted.h"
14#include "base/optional.h"
Etienne Pierre-doray312462152019-03-19 16:10:1715#include "base/sequence_token.h"
Gabriel Charetted35648382019-04-30 21:10:5916#include "base/task/common/checked_lock.h"
Etienne Pierre-dorayb38e0fd2019-03-18 19:35:3817#include "base/task/common/intrusive_heap.h"
Etienne Pierre-dorayb38e0fd2019-03-18 19:35:3818#include "base/task/task_traits.h"
Gabriel Charette52fa3ae2019-04-15 21:44:3719#include "base/task/thread_pool/sequence_sort_key.h"
20#include "base/task/thread_pool/task.h"
Etienne Pierre-doray312462152019-03-19 16:10:1721#include "base/threading/sequence_local_storage_map.h"
Etienne Pierre-dorayb38e0fd2019-03-18 19:35:3822
23namespace base {
24namespace internal {
25
Etienne Pierre-dorayf7f59c32019-05-24 16:50:5326class TaskTracker;
27
Etienne Pierre-doray45fd5d52019-03-28 15:19:5528enum class TaskSourceExecutionMode {
29 kParallel,
30 kSequenced,
31 kSingleThread,
Etienne Pierre-doray36afadeb2019-07-12 21:19:4132 kJob,
33 kMax = kJob,
Etienne Pierre-doray45fd5d52019-03-28 15:19:5534};
35
Etienne Pierre-doray312462152019-03-19 16:10:17