【发布时间】:2019-05-10 09:30:59
【问题描述】:
我正在编写一种多线程观察器,但遇到了一些设计问题。
假设我有某种线程池,其中包含要在数据集上执行的任务队列。其中一些是只读数据,另一些则覆盖它们。
在数据发生变化后,我想执行 notifyall(),以便观察者可以 update() 他们的状态。
执行 update() 任务的线程,我希望它们来自不同的第二个线程池。
还有一个问题:在第一个任务队列的另一个函数开始修改数据之前,如何强制所有 update() 线程执行更新操作?
我正在考虑将锁传递给另一个特定线程。
【问题讨论】:
-
欢迎来到 StackOverflow。如果您用您正在使用的语言(可能还有环境)标记它并发布您已经尝试过的代码,它将帮助社区回答您的问题。看看stackoverflow.com/help/how-to-ask
-
听起来是个坏主意。通常“迫使所有其他线程采取行动”相当于“如果出现任何问题,这将成为人质”。
-
好的,那么解决方案是什么?确保所有 update() 操作在另一个任务开始修改数据之前执行?顺便说一句,还没有代码,只是项目设计。
标签: multithreading locking threadpool observer-pattern