25template <
typename T,
typename Container>
26inline SyncQueue<T, Container>::SyncQueue() noexcept : closed_(false) {}
28template <
typename T,
typename Container>
29inline SyncQueue<T, Container>::~SyncQueue() {
33template <
typename T,
typename Container>
35 std::lock_guard<std::mutex> lock(mutex_);
36 return queue_.empty();
39template <
typename T,
typename Container>
42 std::lock_guard<std::mutex> lock(mutex_);
49template <
typename T,
typename Container>
51 std::unique_lock<std::mutex> lock(mutex_);
52 ready_.wait(lock, [
this]() {
return !queue_.empty() || closed_; });
58 element = std::move(queue_.front());
63template <
typename T,
typename Container>
66 std::lock_guard<std::mutex> lock(mutex_);
73 queue_.push(std::forward<T>(element));
78template <
typename T,
typename Container>
81 std::lock_guard<std::mutex> lock(mutex_);
void Push(T &&element)
Forwards the passed element into the SyncQueue instance.
Definition SyncQueue.inl:64
bool Pull(T &element)
Pulls one element from the SyncQueue instance.
Definition SyncQueue.inl:50
void Close()
Closes this SyncQueue instance, deletes all the queued elements, and blocks you from pulling any elem...
Definition SyncQueue.inl:40
bool Empty() const
Checks whether this SyncQueue instance is empty.
Definition SyncQueue.inl:34
Rules all the other namespaces.
Definition AppleSignInProperties.h:24