From 8465655ceac8e1f78e4af2224ed8b8839ec4a35e Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sun, 7 Sep 2025 21:46:34 +0800 Subject: Fix logger stop. --- include/cru/base/concurrent/ConcurrentQueue.h | 88 --------------------------- 1 file changed, 88 deletions(-) delete mode 100644 include/cru/base/concurrent/ConcurrentQueue.h (limited to 'include/cru/base/concurrent/ConcurrentQueue.h') diff --git a/include/cru/base/concurrent/ConcurrentQueue.h b/include/cru/base/concurrent/ConcurrentQueue.h deleted file mode 100644 index e311d5f9..00000000 --- a/include/cru/base/concurrent/ConcurrentQueue.h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once -#include -#include -#include -#include - -namespace cru::concurrent { -namespace details { -template -struct ConcurrentQueueNode { - ConcurrentQueueNode(T&& value, ConcurrentQueueNode* next = nullptr) - : value(std::move(value)), next(next) {} - - T value; - ConcurrentQueueNode* next; -}; -} // namespace details - -template -class ConcurrentQueue { - public: - ConcurrentQueue() {} - - ConcurrentQueue(const ConcurrentQueue&) = delete; - ConcurrentQueue& operator=(const ConcurrentQueue&) = delete; - - ~ConcurrentQueue() { - if (head_) { - auto node = head_; - while (node) { - auto next = node->next; - delete node; - node = next; - } - } - } - - public: - void Push(T&& value) { - std::unique_lock lock(mutex_); - if (head_ == nullptr) { - head_ = tail_ = new details::ConcurrentQueueNode(std::move(value)); - condition_variable_.notify_one(); - } else { - tail_->next = new details::ConcurrentQueueNode(std::move(value)); - tail_ = tail_->next; - } - } - - T Pull() { - std::unique_lock lock(mutex_); - if (head_ == nullptr) { - condition_variable_.wait(lock); - } - assert(head_ != nullptr); - auto value = std::move(head_->value); - auto next = head_->next; - delete head_; - head_ = next; - if (next == nullptr) { - tail_ = nullptr; - } - return value; - } - - std::optional Poll() { - std::unique_lock lock(mutex_); - if (head_ == nullptr) { - return std::nullopt; - } - auto value = std::move(head_->value); - auto next = head_->next; - delete head_; - head_ = next; - if (next == nullptr) { - tail_ = nullptr; - } - return value; - } - - private: - details::ConcurrentQueueNode* head_ = nullptr; - details::ConcurrentQueueNode* tail_ = nullptr; - - std::mutex mutex_; - std::condition_variable condition_variable_; -}; -} // namespace cru::concurrent -- cgit v1.2.3