如何删除此循环依赖项

时间:2011-11-24 22:17:31

标签: c++ circular-dependency

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

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

getter需要调用处理器告诉它图片准备就绪。处理器必须告诉吸气器已完成处理图片。

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

enter image description here

2 个答案:

答案 0 :(得分:6)

使用资源管理器,让两者都知道。 getter可以将要处理的图片排入队列,然后管理器可以拥有一个处理器的“池”,其中一个处理器可用于处理。处理器可以使用资源管理器将处理后的图片排队,然后资源管理器可以通知相应的getter。我确定这个模式有一些时髦的名字,但现在不记得了。

答案 1 :(得分:0)

也许从getter到processor创建一个1元素队列。

Getter发送图片。处理器完成后,队列为空。