7#include "wfree_fifo.hpp"
8#include "functional.hpp"
9#include "../macros.hpp"
12hi_export_module(hikogui.container.function_fifo);
14hi_export
namespace hi::inline
v1 {
25template<
typename Proto =
void(), std::
size_t SlotSize = 64>
36 [[nodiscard]]
bool empty() const noexcept
46 template<
typename... Args>
47 auto run_one(Args
const &...args)
noexcept
49 return _fifo.take_one([args...](
auto& item) {
71 template<
typename Func>
74 _fifo.insert(make_function<Proto>(std::forward<Func>(func)));
87 template<
typename Func,
typename... Args>
89 requires(std::is_invocable_v<std::decay_t<Func>, std::decay_t<Args>...>)
91 return _fifo.insert_and_invoke(
93 return item.get_future();
95 make_function<Proto>(std::forward<Func>(func)));
DOXYGEN BUG.
Definition algorithm_misc.hpp:20
A fifo (First-in, Firts-out) for asynchronous calls.
Definition function_fifo.hpp:26
void run_all() noexcept
Run all the functions posted or send on the fifo.
Definition function_fifo.hpp:58
auto run_one(Args const &...args) noexcept
Run one of the function that was posted or send.
Definition function_fifo.hpp:47
void add_function(Func &&func) noexcept
Asynchronously post a functor to the fifo to be executed later.
Definition function_fifo.hpp:72
auto add_async_function(Func &&func, Args &&...args) noexcept
Asynchronously send a functor to the fifo to be executed later.
Definition function_fifo.hpp:88
bool empty() const noexcept
Check if there are not functions added to the fifo.
Definition function_fifo.hpp:36
A wait-free multiple-producer/single-consumer fifo designed for absolute performance.
Definition wfree_fifo.hpp:39