활성 오브젝트 및 동시성

활성 오브젝트는 제어 스레드를 소유하는 애플리케이션 오브젝트입니다. 활성 오브젝트에는 제어기 기능이 있습니다. 각 활성 오브젝트는 해당되는 수신 이벤트를 처리하는 이벤트 큐를 소유합니다. 기본적으로 서브오브젝트 역시 활성 상태(각각 해당되는 고유 스레드를 소유하는 경우)가 아니면 서브오브젝트는 스레드를 공유하며 그 결과로 이벤트 큐를 공유합니다.

활성 동시성에 상대적인 것은 순차 동시성입니다. 순차 오브젝트는 시스템 스레드에서 실행되며, 시스템 이벤트 큐가 선입선출(FIFO) 순서로 다른 순차 오브젝트의 이벤트와 함께 오브젝트에 대한 이벤트를 처리할 수 있도록 합니다.

활성 오브젝트는 오브젝트 모델 다이어그램에서 해당 순차 cousin과 유사하게 표시되지만, 경계가 더 진합니다. 다음 그림에서 CodeGenerator는 진한 경계를 사용하여 활성 오브젝트로 표시되지만, ModelCGProperties 오브젝트는 순차로 표시되므로 경계가 얇습니다.

IBM® Rational® Rhapsody®RiCTask라고 하는 사전 정의된 유형의 오브젝트를 데이터 멤버로 추가하여 활성 오브젝트를 구현합니다. 이 조치는 활성 오브젝트가 해당되는 임베디드 RiCTask 멤버의 기능을 재사용할 수 있도록 합니다. 예를 들면, 다음과 같습니다.

typedef struct A A;
struct A {
    RiCTask ric_task;
    /* other members of A */
};

피드백