// Copyright 2015 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_SEQUENCE_MANAGER_WORK_QUEUE_H_ #define BASE_TASK_SEQUENCE_MANAGER_WORK_QUEUE_H_ #include <optional> #include "base/base_export.h" #include "base/containers/intrusive_heap.h" #include "base/memory/raw_ptr_exclusion.h" #include "base/task/sequence_manager/fence.h" #include "base/task/sequence_manager/sequenced_task_source.h" #include "base/task/sequence_manager/task_queue_impl.h" #include "base/values.h" namespace base { namespace sequence_manager { class TaskOrder; namespace internal { class WorkQueueSets; // This class keeps track of immediate and delayed tasks which are due to run // now. It interfaces deeply with WorkQueueSets which keeps track of which queue // (with a given priority) contains the oldest task. // // If a fence is inserted, WorkQueue behaves normally up until // TakeTaskFromWorkQueue reaches or exceeds the fence. At that point it the // API subset used by WorkQueueSets pretends the WorkQueue is empty until the // fence is removed. This functionality is a primitive intended for use by // throttling mechanisms. class BASE_EXPORT WorkQueue { … }; } // namespace internal } // namespace sequence_manager } // namespace base #endif // BASE_TASK_SEQUENCE_MANAGER_WORK_QUEUE_H_