활성 개체 란 무엇입니까?

컴퓨터 프로그래밍 및 엔지니어링에서 활성 객체는 일부 서비스를 항상 다중 스레드 또는 동시 시스템에서 사용할 수 있도록하는 데 사용할 수있는 디자인 패턴 유형입니다. 활성 객체는 메커니즘을 구현하는 객체이므로 외부 객체가 실행이 완료 될 때까지 기다리지 않고도 외부 객체의 입력을 수신하고 처리 할 수 ​​있습니다. 이 메커니즘은 또한 동시 실행중인 많은 오브젝트가 동시 프로세스가 중지되고 액세스를 기다려야하는 긴 차단 시간없이 활성 오브젝트를 사용할 수 있도록합니다. 이것은 프록시라고하는 공개적으로 액세스 가능한 인터페이스로 활성 객체를 래핑 한 다음 객체 내부에 큐 시스템 유형을 구현하여 나중에 처리 할 수 ​​있도록 메시지를 저장함으로써 달성됩니다. 이렇게하면 개체가 메시지를 활성 개체로 보낸 다음 활성 개체가 메시지를 처리 ​​할 때까지 처리를 계속하고 나중에 호출 개체에 결과를 알려 주어 그에 따라 상태를 업데이트 할 수있는 디자인 패턴이 만들어집니다.

활성 객체 디자인 패턴 외부에서는 일반 객체를 수동 객체라고합니다. 간단한 프로그램 예제에서 수동 개체는 채팅 서버 릴레이 역할을 할 수 있으며 원격 개체는 수동 개체와 연결하여 서버의 다른 모든 사람에게 메시지를 전송합니다. 패시브 서버 객체는 원격 객체로부터 채팅 메시지를받을 때마다 요청을 즉시 처리 한 다음 즉시 출력을 보내야하며, 프로세스가 완료 될 때까지 원격 객체는 자체 실행을 중단해야합니다. 프로그램 내에 다른 스레드를 만들면 실행 차단 문제를 해결할 수 있지만 동기화 문제가 발생합니다.

활성 객체 디자인 패턴에서 위 예제의 동일한 서버 객체는 다른 객체와 별개의 자체 스레드에서 실행됩니다. 또한 별도의 스레드, 때로는 기본 프로그램 실행 스레드에서 실행되는 프록시라고하는 일부 유형의 인터페이스에 래핑됩니다. 원격 개체가 서버 개체가 채팅 메시지를 보내도록하려면 프록시 개체에 연결하고 필요한 모든 정보를 전달한 다음 대기하는 대신 정상적인 실행 상태로 돌아갑니다.

그런 다음 프록시 인터페이스는 원격 객체의 정보를 활성 객체가 처리 할 대기열로 전달되는 메시지로 변환합니다. 이 시점에서 프록시 인터페이스와 원격 객체 모두 자유롭게 계속 실행되며 차단되지 않습니다. 한편, 활성 객체는 대기열을 비워두고 들어오는 각 메시지를 처리합니다. 호출 객체에 활성 객체가 일부 정보를 반환해야하는 경우 콜백 구조를 사용하여 원격 객체에 상태 변경 사항을 알릴 수 있습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?