19template <
typename Event,
typename Timeout,
typename Range>
21 Event event{count + 1};
29 auto token =
event.Make();
31 if constexpr (!std::is_same_v<Timeout, NoTimeoutTag>) {
51 static_assert(
sizeof...(cores) >= 1,
"Number of futures must be at least one");
52 static_assert((... && std::is_same_v<BaseCore, Cores>),
"Futures must be Future in Wait function");
54 return (... +
static_cast<std::size_t
>(
func(
cores)));
61template <
typename Event,
typename Timeout,
typename Iterator>
64 "Wait function Iterator must be point to some FutureBase");
71 return static_cast<std::size_t
>(
func(*
it->GetCore()));
78 for (std::size_t
i = 0;
i != count; ++
i) {
#define YACLIB_ASSERT(cond)
bool WaitCore(const Timeout &timeout, Cores &... cores) noexcept
template bool WaitCore< DefaultEvent, NoTimeoutTag, BaseCore, BaseCore >(const NoTimeoutTag &, BaseCore &, BaseCore &) noexcept
template bool WaitCore< DefaultEvent, NoTimeoutTag, BaseCore >(const NoTimeoutTag &, BaseCore &) noexcept
bool WaitRange(const Timeout &timeout, Range &&range, std::size_t count) noexcept
bool WaitIterator(const Timeout &timeout, Iterator it, std::size_t count) noexcept
Contract< V, E > MakeContract()
Creates related future and promise.