|
@@ -205,13 +205,9 @@ public:
|
|
|
|
|
|
void clear()
|
|
void clear()
|
|
{
|
|
{
|
|
- std::unique_lock<std::mutex> lock(mutex_);
|
|
|
|
- // 等待直到队列不为空
|
|
|
|
- cond_var_not_empty_.wait(lock, [this] { return !queue_.empty(); });
|
|
|
|
- while(!queue_.empty())
|
|
|
|
- {
|
|
|
|
- queue_.pop();
|
|
|
|
- }
|
|
|
|
|
|
+ std::lock_guard<std::mutex> lock(mutex_);
|
|
|
|
+ std::queue<T> empty_queue;
|
|
|
|
+ std::swap(queue_, empty_queue); // O(1) 时间清空
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|