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