78 using UniquePtr = std::unique_ptr<SerialExecutor, Deleter>;
99 return parent_->getNumPriorities();
void keepAliveRelease() override
friend class SerialExecutor
std::atomic< ssize_t > keepAliveCounter_
constexpr detail::Map< Move > move
—— Concurrent Priority Queue Implementation ——
static KeepAlive< SerialExecutor > create(KeepAlive< Executor > parent=getKeepAliveToken(getCPUExecutor().get()))
~SerialExecutor() override
PUSHMI_INLINE_VAR constexpr __adl::get_executor_fn executor
void operator()(SerialExecutor *executor)
bool keepAliveAcquire() override
folly::UnboundedQueue< Func, false, true, false > queue_
static KeepAlive< ExecutorT > getKeepAliveToken(ExecutorT *executor)
SerialExecutor(SerialExecutor const &)=delete
std::shared_ptr< Executor > getCPUExecutor()
void addWithPriority(Func func, int8_t priority) override
Executor that guarantees serial non-concurrent execution of added tasks.
std::shared_ptr< Executor > parent_
void add(Func func) override
Deleter(std::shared_ptr< Executor > parent)
std::atomic< std::size_t > scheduled_
static UniquePtr createUnique(std::shared_ptr< Executor > parent=getCPUExecutor())
uint8_t getNumPriorities() const override
std::unique_ptr< SerialExecutor, Deleter > UniquePtr
SerialExecutor & operator=(SerialExecutor const &)=delete
KeepAlive< Executor > parent_
folly::Function< void()> parent