c++ - 如何去除这种循环依赖

标签 c++ circular-dependency

我目前正在尝试设计一款屏幕捕获软件。

我遇到的一个设计问题是我想知道是否可以消除 PictureGetter 和 PictureProcessor 之间的循环依赖。

getter 需要调用处理器来告诉它一张图片已经准备好了。处理器必须告诉 getter 它已完成对图片的处理。

这两个元素在不同的线程中,不能直接共享数据(我也不想共享数据),它们只能将目标对象的成员调用添加到该对象的queue队列中。 (例如 queue.add(&PictureProccessor::sendPicture,picture) )

enter image description here

最佳答案

使用资源管理器,让双方都知道这一点。 getter 可以将要与管理器处理的图片排入队列,然后管理器可以拥有一个处理器“池”,其中一个可用于处理。处理器可以将处理过的图片与资源管理器一起排队,然后资源管理器可以通知适当的 getter。我敢肯定这个模式有一些时髦的名字,但现在想不起来了。

关于c++ - 如何去除这种循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262984/

相关文章:

json - Nest 29840 - ExceptionsHandler 将循环结构转换为 JSON

c++ - 包括依赖

ontology - 猫头鹰本体相互(循环)依赖是否安全或合理?

angular - 避免循环依赖注入(inject)

c++ - 是否可以将 unordered_map 声明并初始化为函数参数?

c++ - 为 C++ 开发设置 GTK+ 时遇到问题

c++ - 线程创建 CPP

艾达:如何解决 "Circular Unit Dependency"?

c++ - 从 DLL 创建符号库以用于 MINGW32

c++ - 使用 JNI 将 jbyte 数组发送到 Java 方法失败