【问题标题】:How to remove this circular dependency如何去除这种循环依赖
【发布时间】:2011-11-24 22:17:31
【问题描述】:

我目前正在尝试设计一款截屏软件。

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

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

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

【问题讨论】:

标签: c++ circular-dependency


【解决方案1】:

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

【讨论】:

  • 是的,这就是我想要的(它也解决了我的图片管理问题)。谢谢。
【解决方案2】:

也许创建一个从 getter 到处理器的 1 元素队列。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多