1

我正在以下位置阅读有关活动对象的文章

http://www.cs.wustl.edu/~schmidt/PDF/Act-Obj.pdf

本文描述了主动对象模式,它将方法执行与方法调用分离,以简化对驻留在其自己的控制线程中的对象的同步访问。主动对象模式允许一个或多个独立的执行线程交错访问建模为单个对象的数据。种类繁多的生产者/消费者和读取器/写入器应用程序非常适合这种并发模型。

我了解方法执行如何解耦方法调用。

我的问题是作者的意思是活动对象模式如何允许一个或多个独立的执行线程交错访问建模为单个对象的数据?

请求给出一个示例,说明作者将数据建模为单个对象的含义以及在这种情况下线程如何交错。

感谢您的时间和帮助。

4

1 回答 1

0

简而言之:该模式说您可以将状态放在一个对象中,该对象的方法都在同一个线程中执行。通常,这是通过对象内部的同步队列来实现的。它的公共方法不直接完成这项工作,但它们只是将请求放入队列中。然后,有一个线程将队列中的请求一一处理。

这样,活动对象内部的数据只能由唯一的线程访问,因此您无需担心显式同步(即:您不需要使用互斥锁)。

切入正题:“建模为单个对象的数据”是活动对象中包含的数据。其他对象通过其唯一的线程访问它们:每个方法调用都由内部队列中的请求表示,因此请求会交错!

在他的论文中,施密特详细解释了活动对象如何与示例一起工作。

于 2013-09-11T07:04:09.230 回答