7#include "wfree_fifo.hpp"
8#include "functional.hpp"
11namespace hi::inline
v1 {
22template<
typename Proto =
void(), std::
size_t SlotSize = 64>
33 [[nodiscard]]
bool empty() const noexcept
43 template<
typename... Args>
46 return _fifo.take_one([&args...](
auto& item) {
47 return item(hi_forward(args)...);
68 template<
typename Func>
71 _fifo.insert(make_function<Proto>(std::forward<Func>(func)));
84 template<
typename Func,
typename... Args>
86 requires(std::is_invocable_v<std::decay_t<Func>, std::decay_t<Args>...>)
88 return _fifo.insert_and_invoke(
90 return item.get_future();
92 make_function<Proto>(std::forward<Func>(func)));
DOXYGEN BUG.
Definition algorithm.hpp:15
A fifo (First-in, Firts-out) for asynchronous calls.
Definition function_fifo.hpp:23
void run_all() noexcept
Run all the functions posted or send on the fifo.
Definition function_fifo.hpp:55
void add_function(Func &&func) noexcept
Asynchronously post a functor to the fifo to be executed later.
Definition function_fifo.hpp:69
auto add_async_function(Func &&func, Args &&...args) noexcept
Asynchronously send a functor to the fifo to be executed later.
Definition function_fifo.hpp:85
auto run_one(Args &&...args) noexcept
Run one of the function that was posted or send.
Definition function_fifo.hpp:44
bool empty() const noexcept
Check if there are not functions added to the fifo.
Definition function_fifo.hpp:33
A wait-free multiple-producer/single-consumer fifo designed for absolute performance.
Definition wfree_fifo.hpp:35