#pragma once
#include <queue>
#include <mutex>
namespace Infra {
template<class T>
class DoubleQueue {
public:
explicit DoubleQueue(int max_capacity)
: max_capacity_(max_capacity) {}
void push(T& ptr) {
std::lock_guard<std::mutex> lock(swap_mutex_);
if (write_queue_.size() > max_capacity_) {
std::cout << "write_queue_ overflow!!!" << std::endl;
return ;
}
write_queue_.emplace(ptr);
}
T pop() {
if (read_queue_.empty()) {
std::lock_guard<std::mutex> lock(swap_mutex_);
if (write_queue_.empty()) {
return nullptr;
}
read_queue_.swap(write_queue_);
}
auto ptr = read_queue_.front();
read_queue_.pop();
return ptr;
}
private:
int max_capacity_;
std::queue<T> write_queue_;
std::queue<T> read_queue_;
std::mutex swap_mutex_;
};
}
C++双缓冲队列实现
最新推荐文章于 2025-11-15 00:15:00 发布
博客围绕C++中的双缓冲和双缓冲队列展开,虽无具体内容,但可知聚焦于这两项信息技术相关内容,双缓冲和双缓冲队列在C++编程中有着重要应用。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
ACE-Step
音乐合成
ACE-Step
ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言
6477

被折叠的 条评论
为什么被折叠?



