首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSemaphore -实现覆盖策略

QSemaphore -实现覆盖策略
EN

Stack Overflow用户
提问于 2021-09-22 19:20:18
回答 1查看 61关注 0票数 0

我想为经典的Producer-Consumer交互实现环形缓冲区。将来,PC都将作为数据处理任务中运行的永久线程来实现,图形用户界面将成为第三个线程,只用于显示实际数据,并通过用户交互协调数据处理的开始和停止。C很慢才能完全处理所有传入的数据,但只需要一点点和短的时间。因此,我只想分配几个P的MTU大小的环形缓冲区,但无论如何,如果C处理现有数据的速度太慢,那么可以松掉旧数据,而改用新的数据(覆盖策略)。

我在queue中读过QSemaphore示例,并认识到通过使用信号量的获取和发布,我只能实现丢弃策略,因为获取队列中指定的块会阻塞,直到没有空闲空间。

是否有任何与QSemaphore一起实现覆盖策略的方法,或者我只需要去实现另一种方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-16 07:24:12

我已经想出了这个解决方案。如果我们应该不惜任何代价将部分src数据推送到环形缓冲区(删除可能的新传入数据是可以的),那么我们应该在生产者部分使用acquire() --这将为我们提供丢弃策略。如果我们需要覆盖策略,我们应该在生产者中使用tryAcquire() -因此,在可能的第一时间,只有最新的数据将被推送到环形缓冲区。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69290115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档