30#ifndef A11_CONCURRENCY_PARALLEL_H_
31#define A11_CONCURRENCY_PARALLEL_H_
37#include <absl/functional/any_invocable.h>
38#include <absl/status/status.h>
39#include <absl/status/statusor.h>
40#include <absl/time/time.h>
44#include "thread/concurrency.h"
58 absl::Time deadline = absl::InfiniteFuture()) {
59 std::vector<absl::StatusOr<T>> results;
60 results.reserve(futures.size());
62 results.push_back(future.Await(deadline));
76 std::vector<absl::AnyInvocable<absl::Status() &&>> work,
77 size_t stack_size = 256 * 1024);
Shared handle to one asynchronous result.
Definition future.h:126
Completion values used by every asynchronous A11 operation.
std::vector< absl::StatusOr< T > > AwaitAll(const std::vector< Future< T > > &futures, absl::Time deadline=absl::InfiniteFuture())
Awaits futures that are already running, and returns every result.
Definition parallel.h:56
absl::Status RunAllToCompletion(std::vector< absl::AnyInvocable< absl::Status() && > > work, size_t stack_size)
Runs each callable on its own fiber and waits for all of them.
Definition parallel.cc:30