OMGuard 클래스

OMGuard는 시작과 종료 사이에 사용자 오퍼레이션을 보호되거나 잠기도록 설정합니다. 이 클래스는 보호된 오퍼레이션에서 뮤텍스를 적절하게 잠그고 해제하도록 생성된 코드(GUARD_OPERATION 매크로)에서 사용됩니다.

OMGuard의 사본 생성자 및 대입 연산자는 보호 오브젝트 뮤텍스의 잘못된 잠금 해제를 피하기 위해 명시적으로 사용하지 않습니다.

이 클래스는 헤더 파일인 omprotected.h에 정의되어 있습니다.

매크로 요약

END_REACTIVE_GUARDED_SECTION은 반응 오브젝트에 사용되는 코드 섹션의 보호를 종료합니다.

END_THREAD_GUARDED_SECTION은 활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 중지합니다.

GUARD_OPERATION은 OMGuard 클래스 오브젝트로 오퍼레이션을 보호합니다.

START_DTOR_REACTIVE_GUARDED_SECTION은 반응 인스턴스의 소멸에 사용되는 코드 섹션의 보호를 시작합니다.

START_DTOR_THREAD_GUARDED_SECTION은 활성 사용자 오브젝트 소멸자에 대한 보호를 시작합니다.

START_REACTIVE_GUARDED_SECTION은 반응 오브젝트에 사용되는 코드 섹션의 보호를 시작합니다.

START_THREAD_GUARDED_SECTION은 활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 시작합니다.

생성 요약
OMGuard
OMGuard 오브젝트를 생성합니다.
~OMGuard
OMGuard 오브젝트를 영구 삭제합니다.
메소드 요약
getGuard
보호를 가져옵니다.
lock
OMGuard 오브젝트의 뮤텍스를 잠급니다.
unlock
OMGuard 오브젝트의 뮤텍스를 잠금 해제합니다.

매크로

매크로

END_REACTIVE_GUARDED_SECTION

반응 오브젝트에 사용되는 코드 섹션의 보호를 종료합니다. 이 매크로는 이벤트 디스패치와 반응 클래스 인스턴스 삭제 사이에서 "경주"가 발생하지 않도록 반응 클래스 이벤트 디스패치 시 호출됩니다. 이러한 메커니즘은 반응 클래스 DTOR이 보호되도록 설정된 경우 활성화됩니다.

END_THREAD_GUARDED_SECTION

활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 중지합니다. 이 매크로는 활성 오브젝트 삭제로부터 이벤트 디스패치를 보호하도록 OMThread 이벤트 디스패치에 사용됩니다. 이러한 메커니즘은 활성 클래스 DTOR이 보호되도록 설정된 경우 활성 클래스에 대해 생성된 코드에서 활성화됩니다.

START_THREAD_GUARDED_SECTION 매크로와 END_THREAD_GUARDED_SECTION 매크로는 toGuardThreadTRUE인 경우 execute 메소드에 의해 호출됩니다.

GUARD_OPERATION

OMGuard 클래스 오브젝트로 오퍼레이션을 보호합니다. 이 매크로는 생성된 코드에서 사용됩니다.

이 매크로는 보호된 클래스에서 OMProtected의 집계를 지원하고 보호된 클래스로 OMProtected로부터의 상속을 지원합니다.

OMDECLARE_GUARDED

OMProtected로부터의 상속 대신 보호된 클래스 내부의 OMProtected 오브젝트를 집계합니다. 이는 다음과 같이 정의합니다.

#define OMDECLARE_GUARDED
  public:
     inline void lock() const {m_omGuard.lock();}
     inline void unlock() const
        {m_omGuard.unlock();}
     inline const OMProtected& getGuard() 
         const {return m_omGuard;}

START_DTOR_REACTIVE_GUARDED_SECTION

반응 오브젝트의 소멸에 사용되는 코드 섹션의 보호를 시작합니다. 이 매크로는 보호되도록 설정된 경우 반응(활성 아님) 클래스의 DTOR에서 호출됩니다. 반응 인스턴스 삭제 시 삭제와 이벤트 디스패치 사이에 "경주"가 발생하지 않도록 이러한 작업이 수행됩니다.

START_DTOR_THREAD_GUARDED_SECTION

활성 사용자 오브젝트 소멸자에 대한 보호를 시작합니다. 이 매크로는 보호되도록 설정된 경우 활성 클래스의 DTOR에서 호출됩니다. 활성 인스턴스 삭제 시 삭제와 이벤트 디스패치 사이에 "경주"가 발생하지 않도록 이러한 작업이 수행됩니다.

START_REACTIVE_GUARDED_SECTION

반응 오브젝트에 사용되는 코드 섹션의 보호를 시작합니다. 이 매크로는 이벤트 디스패치와 반응 클래스 인스턴스 삭제 사이에서 "경주"가 발생하지 않도록 반응 클래스 이벤트 디스패치 시 호출됩니다. 이러한 메커니즘은 반응 클래스 DTOR이 보호되도록 설정된 경우 활성화됩니다.

START_THREAD_GUARDED_SECTION

활성 사용자 오브젝트의 오퍼레이션에 대한 보호를 시작합니다. 이 매크로는 활성 오브젝트 삭제로부터 이벤트 디스패치를 보호하도록 OMThread 이벤트 디스패치에 사용됩니다. 이러한 메커니즘은 활성 클래스 DTOR이 보호되도록 설정된 경우 활성 클래스에 대해 생성된 코드에서 활성화됩니다.

START_THREAD_GUARDED_SECTION 매크로와 END_THREAD_GUARDED_SECTION 매크로는 toGuardThreadTRUE인 경우 execute 메소드에 의해 호출됩니다.


피드백