有两行代码看不懂,求懂行的 v2er 帮解释下,关于 QT 信号量的

2019-10-24 08:05:34 +08:00
 zemora

代码在这里:

https://github.com/WangJinxinNEU/Qt_Hikvsion_multiThread_Opencv/blob/master/ImageBuffer.cpp#L88

第 88 行和第 98 行分别有一个 acquire 和一个 release 调用,我看不懂这一对操作的目的是什么?还有第 90  行 usedSlots 的 acquire 操作目的是什么?

我解释下这个文件的目的:就是实现一个生产者消费者模式的缓冲队列,freeSlots 和 usedSlots 是两个信号量,前者防止写入超出缓冲长度的数据,其值为生成者还未填充的内容,后者防止取到空的数据,其值为生产者已经填充的内容。

问题所在的函数 clear 的目的是清空缓冲区的内容。

1711 次点击
所在节点    问与答
2 条回复
VShawn
2019-10-24 11:31:16 +08:00
人家不是提供了英文注释的吗,意思很明显了
zemora
2019-10-24 13:15:48 +08:00
@VShawn 86 行 release 之后可用的信号量就已经是 buffSize 了,再 acquire 然后再 releae 一次不是多余的吗?我就不理解这一点。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/612321

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX