FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
task_runner.hpp
Go to the documentation of this file.
1// 版權所有 2024 Arthur Sonzogni。保留所有權利。
2// 本原始碼的使用受 MIT 授權條款約束,該條款可在
3// LICENSE 檔案中找到。
4#ifndef TASK_RUNNER_HPP
5#define TASK_RUNNER_HPP
6
9
10namespace ftxui::task {
11
13 public:
14 TaskRunner();
16
17 // 返回當前線程的任務執行器。
18 static auto Current() -> TaskRunner*;
19
20 /// 安排一個任務立即執行。
21 auto PostTask(Task task) -> void;
22
23 /// 安排一個任務在特定延遲後執行。
24 auto PostDelayedTask(Task task,
25 std::chrono::steady_clock::duration duration) -> void;
26
27 /// 運行佇列中的任務,返回下一個延遲任務可以執行的延遲時間。
28 auto RunUntilIdle() -> std::optional<std::chrono::steady_clock::duration>;
29
30 // 運行佇列中的任務,阻塞直到所有任務執行完畢。
31 auto Run() -> void;
32
33 bool HasImmediateTasks() const { return queue_.HasImmediateTasks(); }
34
35 size_t ExecutedTasks() const { return executed_tasks_; }
36
37 private:
38 TaskRunner* previous_task_runner_ = nullptr;
39 TaskQueue queue_;
40 size_t executed_tasks_ = 0;
41};
42
43} // namespace ftxui::task
44
45#endif // TASK_RUNNER_HPP
bool HasImmediateTasks() const
static auto Current() -> TaskRunner *
auto PostTask(Task task) -> void
安排一個任務立即執行。
auto RunUntilIdle() -> std::optional< std::chrono::steady_clock::duration >
運行佇列中的任務,返回下一個延遲任務可以執行的延遲時間。
auto PostDelayedTask(Task task, std::chrono::steady_clock::duration duration) -> void
安排一個任務在特定延遲後執行。
size_t ExecutedTasks() const
std::function< void()> Task
任務代表一個工作單元。
bool HasImmediateTasks() const