6#ifndef THREAD_EXECUTOR_H_
7#define THREAD_EXECUTOR_H_
13#include "absl/functional/any_invocable.h"
14#include "absl/status/status.h"
15#include "absl/time/clock.h"
16#include "absl/time/time.h"
23void Post(absl::AnyInvocable<
void() &&> work);
24void PostAt(absl::Time deadline, absl::AnyInvocable<
void() &&> work);
27 absl::AnyInvocable<
void() &&> work) {
28 PostAt(absl::Now() + delay, std::move(work));
32 absl::AnyInvocable<
void*()
const>
release;
33 absl::AnyInvocable<void(
void*)
const>
acquire;
46 virtual size_t PickNext(
size_t ready_count)
noexcept = 0;
54void EnsureCurrentScheduler();
virtual ~SchedulerPolicy()=default
virtual size_t PickNext(size_t ready_count) noexcept=0
void PostAfter(absl::Duration delay, absl::AnyInvocable< void() && > work)
Definition executor.h:26
void PostAt(absl::Time deadline, absl::AnyInvocable< void() && > work)
Definition thread_pool.cc:146
absl::Status SetCurrentSchedulerPolicy(std::shared_ptr< SchedulerPolicy > policy)
Definition executor.cc:130
void Post(absl::AnyInvocable< void() && > work)
Definition thread_pool.cc:142
void SetSchedulerParkGuard(SchedulerParkGuard guard)
Definition executor.cc:120
absl::AnyInvocable< void(void *) const > acquire
Definition executor.h:33
absl::AnyInvocable< void *() const > release
Definition executor.h:32