tess 1.0.0
Performance-first tile and path simulation substrate
Loading...
Searching...
No Matches
async_work_task.h
1#pragma once
2
3#include <tess/ops/async_work.h>
4#include <tess/sim/schedule.h>
5
6namespace tess {
7
13template <typename T>
14class ResumableWorkTask {
15 public:
16 explicit ResumableWorkTask(ResumableWorkQueue<T>& queue) noexcept
17 : queue_(&queue) {}
18
19 ResumableWorkTask(const ResumableWorkTask&) = delete;
20 auto operator=(const ResumableWorkTask&) -> ResumableWorkTask& = delete;
21 ResumableWorkTask(ResumableWorkTask&&) = delete;
22 auto operator=(ResumableWorkTask&&) -> ResumableWorkTask& = delete;
23
24 [[nodiscard]] auto operator()(const ScheduleTaskContext& context)
26 const auto stats = queue_->advance(AsyncWorkBudget{context.budget_items});
27 return ScheduleTaskResult{{}, stats.items_done, stats.pending != 0, 0};
28 }
29
30 private:
31 ResumableWorkQueue<T>* queue_ = nullptr;
32};
33
34} // namespace tess
Definition async_work.h:107
Deterministic item allowance shared by one queue advance.
Definition async_work.h:50
Supplies a task with the current tick, trigger bits, and work allowance.
Definition schedule.h:122
Returns produced dirty bits and bounded background progress to the schedule.
Definition schedule.h:136