我目前正在尝试设计一个屏幕捕获软件。
我遇到的一个设计问题是我想知道是否可以消除PictureGetter和PictureProcessor之间的循环依赖。
getter需要调用处理器告诉它图片准备就绪。处理器必须告诉吸气器已完成处理图片。
这两个元素位于不同的线程中,不能直接共享数据(我不想共享数据),它们只能将目标对象的成员调用添加到该对象的队列队列中。 (例如queue.add(&PictureProccessor::sendPicture,picture)
)
答案 0 :(得分:6)
使用资源管理器,让两者都知道。 getter可以将要处理的图片排入队列,然后管理器可以拥有一个处理器的“池”,其中一个处理器可用于处理。处理器可以使用资源管理器将处理后的图片排队,然后资源管理器可以通知相应的getter。我确定这个模式有一些时髦的名字,但现在不记得了。
答案 1 :(得分:0)
也许从getter到processor创建一个1元素队列。
Getter发送图片。处理器完成后,队列为空。