46 std::unique_ptr<Impl> impl_;
60 virtual ~WaitHandle() =
default;
68 WaitHandle() =
default;
77 std::chrono::milliseconds timeout = std::chrono::milliseconds::max());
87 std::chrono::milliseconds timeout = std::chrono::milliseconds::max());
96 WaitHandle* wait_handles[],
size_t wait_handle_count,
bool wait_all,
bool is_alertable,
97 std::chrono::milliseconds timeout = std::chrono::milliseconds::max());
105 std::chrono::milliseconds timeout = std::chrono::milliseconds::max()) {
106 return WaitMultiple(wait_handles, wait_handle_count,
true, is_alertable, timeout).first;
114 std::chrono::milliseconds timeout = std::chrono::milliseconds::max()) {
115 return WaitAll(wait_handles.data(), wait_handles.size(), is_alertable, timeout);
125 WaitHandle* wait_handles[],
size_t wait_handle_count,
bool is_alertable,
126 std::chrono::milliseconds timeout = std::chrono::milliseconds::max()) {
127 return WaitMultiple(wait_handles, wait_handle_count,
false, is_alertable, timeout);
136 std::vector<WaitHandle*> wait_handles,
bool is_alertable,
137 std::chrono::milliseconds timeout = std::chrono::milliseconds::max()) {
138 return WaitAny(wait_handles.data(), wait_handles.size(), is_alertable, timeout);
161 virtual void Reset() = 0;
176 static std::unique_ptr<Semaphore>
Create(
int initial_count,
int maximum_count);
185 virtual bool Release(
int release_count,
int* out_previous_count) = 0;
197 static std::unique_ptr<Mutant>
Create(
bool initial_owner);
Integer types, byte order wrappers and size literals.