FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
task_queue.hpp
Go to the documentation of this file.
1// Copyright 2024 Arthur Sonzogni. All rights reserved.
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 代表一個預計在特定時間或盡快執行的任務。
bool HasImmediateTasks() const
auto Get() -> MaybeTask
std::variant< Task, std::chrono::steady_clock::duration, std::monostate > MaybeTask
auto PostTask(PendingTask task) -> void
Definition task_queue.cpp:8