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
11
namespace
ftxui::task
{
12
13
/// 任務佇列,用於排定未來執行的任務。任務可以排定立即執行,或在指定持續時間後執行。
14
/// - 任務會依排定的順序執行。
15
/// - 如果多個任務排定在同一時間執行,它們會依排定的順序執行。
16
/// - 如果任務排定在過去執行,它會立即執行。
17
struct
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
ftxui::task
Definition
screen_interactive.hpp:26
ftxui::task::PendingTask
PendingTask 代表一個預計在特定時間或盡快執行的任務。
Definition
task_internal.hpp:16
ftxui::task::TaskQueue
Definition
task_queue.hpp:17
ftxui::task::TaskQueue::HasImmediateTasks
bool HasImmediateTasks() const
Definition
task_queue.hpp:24
ftxui::task::TaskQueue::Get
auto Get() -> MaybeTask
Definition
task_queue.cpp:22
ftxui::task::TaskQueue::MaybeTask
std::variant< Task, std::chrono::steady_clock::duration, std::monostate > MaybeTask
Definition
task_queue.hpp:20
ftxui::task::TaskQueue::PostTask
auto PostTask(PendingTask task) -> void
Definition
task_queue.cpp:8
task_internal.hpp