3#ifndef A11_CONCURRENCY_CALLBACK_SCHEDULER_H_
4#define A11_CONCURRENCY_CALLBACK_SCHEDULER_H_
9#include <absl/functional/any_invocable.h>
11#include "thread/boost_primitives.h"
18class CallbackScheduler {
20 explicit CallbackScheduler(
size_t max_callbacks_per_turn = 64)
21 : max_callbacks_per_turn_(max_callbacks_per_turn) {}
23 CallbackScheduler(
const CallbackScheduler&) =
delete;
24 CallbackScheduler& operator=(
const CallbackScheduler&) =
delete;
26 void Schedule(absl::AnyInvocable<
void() &&> callback);
31 const size_t max_callbacks_per_turn_;
33 std::deque<absl::AnyInvocable<void() &&>> callbacks_ ABSL_GUARDED_BY(mu_);
34 bool scheduled_ ABSL_GUARDED_BY(mu_) =
false;
Definition callback_scheduler.cc:12
void Schedule(absl::AnyInvocable< void() && > work, thread::TreeOptions tree_options)
Schedule work on A11's fiber pool without returning a completion handle.
Definition executor.cc:35