【发布时间】:2012-02-03 13:42:00
【问题描述】:
我有一个问题,主题每次都会在不同的线程中更新。因此,无论何时更新主题,它都会相应地用新信息更新观察者。但是,如果观察者列表很长,则需要一些时间来更新所有观察者。想想一个经常更新的主题。当主体更新观察者时,“主体”对象被锁定,因此不能被不同的线程更新。这会为主题创建信息流量或导致信息丢失。
您知道如何在多线程环境中处理这些问题吗?另外,谁能推荐一些关于C++并行编程的书?
【问题讨论】:
-
这是一个理论问题吗?因为您的问题可能有其他解决方案不涉及使用所谓的“模式”。
-
如果主体持有的信息在观察者更新过程中没有变化或者变化没有任何后果,则不需要“锁定”。以只读文件为例。据我所知,如果我正确理解了您的观点,多线程将无法解决问题。其他线程也可以等到主题再次可用并且在超时后不返回,并且不会出现“信息丢失”,但这取决于您在描述中提供的信息量难以想象的上下文你的问题。
标签: c++ multithreading observer-pattern