OMTimerManager 클래스

OMTimerManager는 단일 타이머 태스크를 사용하여 모든 스레드에 타이머 서비스를 제공합니다. 이 클래스는 헤더 파일인 timer.h에 정의되어 있습니다.

OMTimerManager는 제한시간 요청을 관리하고 시스템 오브젝트에 대한 제한시간 이벤트를 실행합니다. OMTimerManager는 싱글톤 활성 오브젝트입니다. 제한시간 요청을 관리하기 위해 프레임워크 초기화 중 싱글톤이 작성되고 새로운 단일 스레드가 작성됩니다.

주: Rational® Rhapsody®에서 생성한 모든 애플리케이션에서는 개별 스레드가 애플리케이션에 타이머 지원을 제공합니다. 애플리케이션이 단일 스레드이면 Rational Rhapsody 생성 애플리케이션에는 애플리케이션을 위한 스레드 하나와 타이머 지원을 위한 스레드 하나가 존재합니다.

OMThreadTimerOMTimerManager에서 상속하고 프레임워크 및 애플리케이션에 대한 실제 타이밍 서비스를 수행합니다. OMThreadTimer에 대한 자세한 정보는 OMThreadTimer 클래스의 내용을 참조하십시오.

OMTimerManager는 다음과 같은 두 가지 시간 모델을 구현할 수 있습니다.

시뮬레이션된 시간은 디버깅 및 알고리즘 유효성 검증에 유용합니다.

시뮬레이션된 시간은 런타임 시 지원됩니다. 즉, 매개변수가 애플리케이션 초기화 시 프레임워크에 제공됩니다. 그러나 실시간과 시뮬레이션된 시간 간에 전환하려면 코드를 재생성하여 빌드해야 합니다.

현재 버전에서 시뮬레이션된 시간은 초기화 시 OXF::init에서 isRealTime 매개변수를 통해 처리됩니다.

init, OMTimerManagerDefaults 클래스,goNext(개인용) 및 goNextAndPost 메소드는 시뮬레이션된 시간 모드에서 사용됩니다.

속성 요약
overflowMark - 현재 시스템 시간이 "오버플로우"되었는지 여부를 판별하는 데 사용되는 값을 지정합니다.
생성 요약
OMTimerManager - OMTimerManager 오브젝트를 생성합니다.
~OMTimerManager
OMTimerManager 오브젝트를 영구 삭제합니다.
메소드 요약
action - 만기된 제한시간 요청을 관련 스레드로 전송합니다. 그러면 해당 요청이 스레드의 이벤트 큐에 삽입됩니다.
cbkBridge
timeTickCbk(개인용) 메소드를 통해 운영 체제로부터 인터럽트를 가져오는 브릿지입니다.
clearInstance
타이머 관리자의 싱글톤 인스턴스를 정리합니다.
consumeTime
시간 이용을 시뮬레이션하는 시뮬레이션된 시간 모드에서 사용됩니다.
destroyTimer
타이머 관리자의 싱글톤 인스턴스를 정리합니다.
getElapsedTime
현재 시스템 시간인 m_Time의 값을 리턴합니다.
goNextAndPost
시뮬레이션된 시간 모드에서 사용됩니다.
init
타이머 작동을 시작합니다.
initInstance
싱글톤 인스턴스를 초기화합니다.
instance
타이머 관리자의 싱글톤 인스턴스를 작성합니다.
resume
애니메이션 중 프레임워크에서 타이머를 재개하는 데 사용됩니다.
set
OMTimerManager에 제한시간 요청을 위임합니다.
setElapsedTime
현재 시스템 시간인 m_Time의 값을 설정합니다.
softUnschedTm
만기 목록에서 특정 제한시간을 제거합니다.
suspend
애니메이션 중 프레임워크에서 타이머를 일시중단하는 데 사용됩니다.
unschedTm
제한시간 요청을 취소합니다.

속성

overflowMark

보호된 이 속성은 현시 시스템 시간(m_Time)이 "오버플로우"되었는지 여부를 판별하는 데 사용되는 값을 지정합니다. m_Time은 부호 없는 정수(Long)로 구현되고 최대값은 구현에 따라 달라집니다.

이는 다음과 같이 정의합니다.

RP_FRAMEWORK_DLL static const timeUnit
        overflowMark;

timeUnit 메소드는 다음과 같이 rawtypes.h에 정의되어 있습니다.

typedef unsigned long timeUnit;

overflowMark 값은 다음과 같이 timer.cpp에 지정되어 있습니다.

const timeUnit OMTimerManager::overflowMark =
        0x80000000;

post 메소드는 힙에서 현재 제한시간 요청으로 포인터를 가져온 후 m_TimeoverflowMark와 비교합니다. m_Time >= overflowMark이면 post 메소드는 힙에 대해 반복 수행하여 각 제한시간 요청의 dueTime을 조정하고 다음과 같이 m_Time을 재설정합니다.

m_Time &= ~overflowMark;

dueTimem_Time을 업데이트하면 시스템 자원을 사용합니다. 따라서 애플리케이션의 m_Time을 주의 깊게 모니터링해야 합니다.


피드백