Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 建模为单个对象的活动对象模式建模_Design Patterns_Active Objects - Fatal编程技术网

Design patterns 建模为单个对象的活动对象模式建模

Design patterns 建模为单个对象的活动对象模式建模,design-patterns,active-objects,Design Patterns,Active Objects,我正在以下位置阅读一篇关于活动对象的文章 本文描述了一种主动对象模式,它是一种解耦方法 从方法调用执行以简化同步 访问驻留在其自身控制线程中的对象。这个 活动对象模式允许一个或多个独立的线程 执行以交错访问建模为单个数据库的数据 对象广泛的生产者/消费者和读者/作家阶层 应用程序非常适合这种并发模型 我理解了方法执行是如何解耦方法调用的 我的问题是,作者所说的活动对象模式如何允许一个或多个独立的执行线程交错访问建模为单个对象的数据,这是什么意思 请求提供一个示例,说明authore将数据建模为

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

本文描述了一种主动对象模式,它是一种解耦方法 从方法调用执行以简化同步 访问驻留在其自身控制线程中的对象。这个 活动对象模式允许一个或多个独立的线程 执行以交错访问建模为单个数据库的数据 对象广泛的生产者/消费者和读者/作家阶层 应用程序非常适合这种并发模型

我理解了方法执行是如何解耦方法调用的

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

请求提供一个示例,说明authore将数据建模为单个对象意味着什么,以及在这种情况下线程如何交错


感谢您的时间和帮助。

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

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

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

在他的论文中,施密特通过例子详细解释了活动对象是如何工作的