FTXUI 6.1.9
C++ functional terminal UI.
载入中...
搜索中...
未找到
task_queue.hpp
浏览该文件的文档.
1// 版权所有 2024 Arthur Sonzogni。保留所有权利。
2// 本源代码的使用受 MIT 许可证的约束,该许可证可在 LICENSE 文件中找到。
3#ifndef TASK_QUEUE_HPP
4#define TASK_QUEUE_HPP
5
6#include <queue>
7#include <variant>
8
9#include "ftxui/component/task_internal.hpp" // for PendingTask, Task
10
11namespace ftxui::task {
12
13/// 一个任务队列,用于调度未来执行的任务。任务可以安排立即执行,或在特定持续时间后执行。
14/// - 任务按照调度顺序执行。
15/// - 如果多个任务安排在同一时间执行,它们将按照调度顺序执行。
16/// - 如果任务安排在过去执行,则立即执行。
17struct TaskQueue {
18 auto PostTask(PendingTask task) -> void;
19
20 using MaybeTask =
21 std::variant<Task, std::chrono::steady_clock::duration, std::monostate>;
22 auto Get() -> MaybeTask;
23
24 bool HasImmediateTasks() const { return !immediate_tasks_.empty(); }
25
26 private:
27 std::queue<PendingTask> immediate_tasks_;
28 std::priority_queue<PendingTask> delayed_tasks_;
29};
30
31} // namespace ftxui::task
32
33#endif
PendingTask 表示一个计划在特定时间或尽快执行的任务。
auto Get() -> MaybeTask
std::variant< Task, std::chrono::steady_clock::duration, std::monostate > MaybeTask
auto PostTask(PendingTask task) -> void