在计算机编程和工程方面,活动对象是一种设计模式,可用于帮助确保某些服务在多线程或并发系统中始终可用。活动对象是实现一种机制的对象,它可以接收和处理来自外部对象的输入,而不必强迫外部对象等待执行完成这种机制还允...
在计算机编程和工程方面,活动对象是一种设计模式,可用于帮助确保某些服务在多线程或并发系统中始终可用。活动对象是实现一种机制的对象,它可以接收和处理来自外部对象的输入,而不必强迫外部对象等待执行完成这种机制还允许许多可能同时运行的对象使用活动对象,而不需要长时间阻塞,在这种情况下,并发进程必须停止并等待访问。这通常是通过将活动对象包装在一个可公开访问的接口(称为代理)中,然后实现对象内部的一种队列系统,用于存储消息以备以后处理。这将创建一种设计模式,在这种模式中,对象将消息发送给活动对象,然后继续进行处理,直到活动对象处理消息,然后将结果通知调用对象,以便它们可以相应地更新其状态

主动对象设计模式之外的手持计算机,一个普通的对象可以被称为被动对象。在一个简单的程序示例中,被动对象可以充当聊天服务器中继,在这个中继中,远程对象与被动对象联系以将消息传输给服务器上的其他所有人。每当被动服务器对象从远程对象接收到聊天消息时,它必须立即处理请求,然后立即发送输出,所有这一切都是在远程对象停止自己的执行,直到进程完成,这种效果称为阻塞在程序中创建不同的线程可以解决执行阻塞问题,但随后会引发同步问题,上例中的同一个服务器对象将在它自己的线程中运行,与其他对象分开运行。它也会被包装在一种称为代理的接口中,该接口也在一个单独的线程中运行,有时是主程序执行线程。当远程对象希望服务器对象发送聊天消息时,它联系代理对象,向它传递所需的所有信息,然后返回到其正常执行状态,而不是等待。然后代理接口将远程对象的信息转换为消息,并将其传递到队列中供活动对象处理。此时,代理接口和远程对象都可以自由地继续执行,不会被阻塞,同时,活动对象保持队列为空,处理每个传入消息。如果调用对象需要活动对象返回一些信息,然后可以使用回调结构通知远程对象状态的任何更改。