草庐IT

栈队列

全部标签

c++ - boost 条件不适用于具有两个生产者和一个消费者的线程安全队列

我有两个线程添加到“线程安全”队列中。但是,当第二个线程尝试“推送”内容时。不会通知消费者内容可用。队列继续增长,但notify_one()从不通知消费方法中的条件。这是为什么?#ifndefCONCURRENT_QUEUE_H#defineCONCURRENT_QUEUE_H#include#includetemplateclassconcurrent_queue{private:std::queuethe_queue;mutableboost::mutexthe_mutex;boost::condition_variablethe_condition_variable;public

c++ - 具有 "blocking"pop 的单一生产者单一消费者队列

我正在寻找具有“阻塞”流行音乐的单一生产者单一消费者队列。升压spsc_queue几乎没问题,除了一种方法:boolpop(T&ret);Popsoneobjectfromringbuffer.该方法是“非阻塞的”,如果没有数据则立即返回。我希望此方法“阻塞”并等待一些数据到达。我应该使用哪些集合?upd至少有人可以建议任何带有阻塞pop的c++队列吗? 最佳答案 并发队列很少提供弹出阻塞接口(interface):在许多情况下,用户应该执行阻塞逻辑,避免队列实现的不必要开销。也就是说,您可以在queue::pop周围添加一个包装器

【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶

 🎉🎉欢迎光临🎉🎉🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀🌟特别推荐给大家我的最新专栏《Redis实战与进阶》本专栏纯属为爱发电永久免费!!!这是苏泽的个人主页可以看到我其他的内容哦👇👇努力的苏泽http://suzee.blog.csdn.net/最近工作室的一个业务跟另一个业务合并自然要用到MQ(消息队列MessageQueue)那么很显然就要部署个RabbitMQ到服务器上了  我们用的是云托管的的服务那自然是部署中间件到云服务上去了服务是一路开通结果到了需要调试的时候怎么也连不上(说是内网直连,但关键是同事们都在线下做本地测试的呀)直接无语了面对这一场景怎么办?业务还要继续

c++ - GCC 中优先队列的奇怪 shared_ptr 比较器选择

我有一个包含在std::shared_ptr中的类,我想在std::priority_queue的帮助下选择前k个对象.所以,我定义operator并期待一切都会好起来的。但事实并非如此。默认情况下(使用gcc)std::priority_queue使用默认比较器std::shared_ptr,比较地址。但是如果我对std::vector使用std::sort而没有指定比较器我的operator行为是不同的将会被使用。这有点出乎意料且不一致。代码示例:structdocument{floatrank;document(floatrank):rank(rank){}};usingdoc_

c++ - 线程安全队列是一种好方法吗?

我正在寻找一种方法来优化我开发的开源项目的以下代码,或者通过将繁重的工作转移到另一个线程来boost它的性能。voidProfilerCommunication::AddVisitPoint(ULONGuniqueId){CScopedLocklock(m_mutexResults);m_pVisitPoints->points[m_pVisitPoints->count].UniqueId=uniqueId;if(++m_pVisitPoints->count==VP_BUFFER_SIZE){SendVisitPoints();m_pVisitPoints->count=0;}}以

c++ - Boost::graph Dijkstra:最初填充队列

我正在使用boost::graph及其Dijkstra实现。我想计算从一组顶点到另一组顶点的最短路径。我不想计算这些集合之间的所有可能路径。想法如下:我在一栋大楼里,入口在不同的街道上。这样我就可以在这些街道中的任何一条上开始我的旅程。但我只对最短的感兴趣。如果我使用自己的Dijkstra算法实现,我会执行以下操作:对于每个起始节点,距离映射到0将起始节点加入优先队列。虽然使用boost::dijkstra_shortest_paths_no_init很容易将距离图设置为0,但我不知道如何将节点添加到优先级队列。我查看了源代码,这似乎是不可能的。所以我正在考虑定义我自己的Combine

c++ - 使用 stxxl 队列时为 `pointer being freed was not allocated`

我的代码似乎可以工作(由于上述错误,我还没有在大型数据集上尝试过)。代码:#include#include#includeintmain(){//queueq;//thisworksstxxl::queueq;//doesnotworkfor(inti=0;i我的简单.stxxl就是:disk=./testfile,0,syscall但我的错误是:stackexchangeexample(3884)malloc:***errorforobject0x101c04000:pointerbeingfreedwasnotallocated***setabreakpointinmalloc_e

【leetcode】622. 设计循环队列(Circular Queue)

文章目录1.怎么设计循环队列?2.数组实现循环队列往期相关文章推荐:1.队列(Queue)2.栈(Stack)之浅谈数组和链表实现栈各自的优缺点3.线性表之链表(LinkedList)4.线性表之顺序表(SequenceList)1.怎么设计循环队列?  循环队列也叫环形队列,可以用数组或循环链表实现,使用场景是在那种只需要固定空间大小,且一直有插入删除的情况。设计循环队列最大的问题是怎么确定队列是空还是满的状态,如果是增加额外变量size记录数据个数,则很容易解决这个问题,不过这里不打算使用size的方式。下面将一步步分析使用数组的方式如何实现,至于循环链表实现队列,看似天然循环,实际还是很

数据结构——栈和队列

文章目录一.栈1.栈介绍2.栈的定义3.栈的各种操作(1)"InitStack"初始化栈(2)"PushTop"从栈顶插入数据(3)"PopTop"弹出栈顶数据(4)"ReadTop"读取栈顶数据(5)"PopTop"弹出栈顶数据"test"测试以上代码(6)"ReadBack"读取栈底数据(7)"IsFullStack"判断栈是否已满(8)"DestroyStack"销毁栈二.队列1.队列介绍2.队列的定义3.队列需实现的接口(1)"test"传参与测试(2)"InitQueue"初始化(3)"PushQueue"入队(4)"Destroy"销毁队列(5)"PopQueue"弹出队头数据(6

c++ - c++ 中是否有可用的并发队列库?

我想知道是否有可用的C++并发队列实现/库? 最佳答案 英特尔线程构建模块有一个:http://threadingbuildingblocks.org/files/documentation/a00129.html.并发运行时中也有一个(VS2010可用)http://msdn.microsoft.com/en-us/library/ee355358.aspx. 关于c++-c++中是否有可用的并发队列库?,我们在StackOverflow上找到一个类似的问题: