FTXUI 7.0.3
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// Use of this source code is governed by the MIT license that can be found in
3// the LICENSE file.
4#ifndef TASK_QUEUE_HPP
5#define TASK_QUEUE_HPP
6
7#include <mutex>
8#include <queue>
9#include <variant>
10
11#include "ftxui/component/task_internal.hpp" // for PendingTask, Task
12
13namespace ftxui::task {
14
15/// 将来実行されるタスクをスケジュールするタスクキュー。タスクは
16/// 即座に、または一定期間後に実行されるようスケジュールできます。
17/// - タスクはスケジュールされた順序で実行されます。
18/// - 複数のタスクが同じ時刻に実行されるようスケジュールされている場合、
19/// スケジュールされた順序で実行されます。
20/// - タスクが過去に実行されるようスケジュールされている場合、
21/// 直ちに実行されます。
22struct TaskQueue {
23 using MaybeTask =
24 std::variant<Task, std::chrono::steady_clock::duration, std::monostate>;
25
26 auto Get() -> MaybeTask;
27 auto HasImmediateTasks() const -> bool;
28 auto PostTask(PendingTask task) -> void;
29
30 private:
31 mutable std::mutex mutex_;
32 std::queue<PendingTask> immediate_tasks_;
33 std::priority_queue<PendingTask> delayed_tasks_;
34};
35
36} // namespace ftxui::task
37
38#endif
PendingTaskは、特定の時刻に、または可能な限り早く実行されるようにスケジュールされたタスクを表します。
auto HasImmediateTasks() const -> bool
auto Get() -> MaybeTask
std::variant< Task, std::chrono::steady_clock::duration, std::monostate > MaybeTask
auto PostTask(PendingTask task) -> void
Definition task_queue.cpp:8