我正在以下位置阅读有关活动对象的文章
http://www.cs.wustl.edu/~schmidt/PDF/Act-Obj.pdf
本文描述了Active Object模式,它解耦方法 从方法调用执行以简化同步 访问驻留在其自己的控制线程中的对象。该 Active Object模式允许一个或多个独立线程 执行以交换他们对作为单个建模的数据的访问 宾语。广泛的生产者/消费者和读者/作者 应用程序非常适合这种并发模型。
我理解了解耦方法调用的方法执行方式。
我的问题是作者的意思是主动对象模式如何允许一个或多个独立的执行线程将他们对数据建模的访问交错为单个对象?
请求举例说明作为单个对象建模的数据对authore意味着什么,以及在这种情况下线程如何交错。
感谢您的时间和帮助。
答案 0 :(得分:0)
简而言之:模式表明您可以将状态放在一个对象中,该对象的方法都在同一个线程中执行。通常,这是通过对象内部的同步队列实现的。它的公共方法不能直接完成工作,但它们只是将请求放入队列中。然后,有一个线程逐个处理队列中的请求。
这样,活动对象内的数据只能由唯一的线程访问,因此您不必担心显式同步(即:您不需要使用互斥锁)。
要明白这一点:“作为单个对象建模的数据”是活动对象中包含的数据。它们通过其唯一的线程由其他对象访问:每个方法调用由内部队列中的请求表示,以便请求进行交错!
在他的论文中,施密特详细解释了活动对象如何使用示例。