다음을 통해 공유


IUMSThreadProxy 구조체

실행 스레드에 대한 추상화입니다. 해당 스케줄러에 UMS(사용자 모드 예약 가능) 스레드를 부여하려는 경우 스케줄러 정책 요소 SchedulerKind의 값을 UmsThreadDefault로 설정하고 IUMSScheduler 인터페이스를 구현합니다. UMS 스레드는 Windows 7 이상 버전의 64비트 운영 체제에서만 지원됩니다.

구문

struct IUMSThreadProxy : public IThreadProxy;

멤버

공용 메서드

이름 설명
IUMSThreadProxy::EnterCriticalRegion 중요한 지역을 입력하기 위해 호출됩니다. 중요한 지역 내에 있는 경우 스케줄러는 지역 중에 발생하는 비동기 차단 작업을 관찰하지 않습니다. 즉, UMS 스레드의 경우 페이지 오류, 스레드 일시 중단, APC(커널 비동기 프로시저 호출) 등에 대해 스케줄러가 다시 입력되지 않습니다.
IUMSThreadProxy::EnterHyperCriticalRegion 매우 중요한 영역을 입력하기 위해 호출됩니다. 매우 중요한 지역 내에 있는 경우 스케줄러는 지역 중에 발생하는 차단 작업을 관찰하지 않습니다. 이는 스케줄러가 UMS 스레드에 대한 함수 호출 차단, 차단되는 잠금 가져오기 시도, 페이지 폴트, 스레드 보류, 커널 비동기 프로시저 호출(APC) 등에 재진입되지 않음을 의미합니다.
IUMSThreadProxy::ExitCriticalRegion 중요한 지역을 종료하기 위해 호출됩니다.
IUMSThreadProxy::ExitHyperCriticalRegion 매우 중요한 지역을 종료하기 위해 호출됩니다.
IUMSThreadProxy::GetCriticalRegionType 스레드 프록시가 있는 중요한 영역의 종류를 반환합니다. 하이퍼 크리티컬 영역은 중요한 영역의 상위 집합이므로 코드가 중요한 지역에 진입한 다음, 하이퍼 크리티컬 지역이 InsideHyperCriticalRegion 반환됩니다.

상속 계층 구조

IThreadProxy

IUMSThreadProxy

요구 사항

헤더: concrtrm.h

네임스페이스: 동시성

IUMSThreadProxy::EnterCriticalRegion 메서드

중요한 지역을 입력하기 위해 호출됩니다. 중요한 지역 내에 있는 경우 스케줄러는 지역 중에 발생하는 비동기 차단 작업을 관찰하지 않습니다. 즉, UMS 스레드의 경우 페이지 오류, 스레드 일시 중단, APC(커널 비동기 프로시저 호출) 등에 대해 스케줄러가 다시 입력되지 않습니다.

virtual int EnterCriticalRegion() = 0;

Return Value

중요한 영역의 새로운 깊이입니다. 중요한 지역은 재진입됩니다.

IUMSThreadProxy::EnterHyperCriticalRegion 메서드

매우 중요한 영역을 입력하기 위해 호출됩니다. 매우 중요한 지역 내에 있는 경우 스케줄러는 지역 중에 발생하는 차단 작업을 관찰하지 않습니다. 이는 스케줄러가 UMS 스레드에 대한 함수 호출 차단, 차단되는 잠금 가져오기 시도, 페이지 폴트, 스레드 보류, 커널 비동기 프로시저 호출(APC) 등에 재진입되지 않음을 의미합니다.

virtual int EnterHyperCriticalRegion() = 0;

Return Value

매우 중요한 영역의 새로운 깊이입니다. 하이퍼 크리티컬 영역은 재진입됩니다.

설명

스케줄러는 호출하는 메서드와 해당 지역에서 획득하는 잠금에 대해 매우 주의해야 합니다. 이러한 지역의 코드가 스케줄러가 예약을 담당하는 잠금을 차단하는 경우 교착 상태가 발생할 수 있습니다.

IUMSThreadProxy::ExitCriticalRegion 메서드

중요한 지역을 종료하기 위해 호출됩니다.

virtual int ExitCriticalRegion() = 0;

Return Value

중요한 영역의 새로운 깊이입니다. 중요한 지역은 재진입됩니다.

IUMSThreadProxy::ExitHyperCriticalRegion 메서드

매우 중요한 지역을 종료하기 위해 호출됩니다.

virtual int ExitHyperCriticalRegion() = 0;

Return Value

매우 중요한 영역의 새로운 깊이입니다. 하이퍼 크리티컬 영역은 재진입됩니다.

IUMSThreadProxy::GetCriticalRegionType 메서드

스레드 프록시가 있는 중요한 영역의 종류를 반환합니다. 하이퍼 크리티컬 영역은 중요한 영역의 상위 집합이므로 코드가 중요한 지역에 진입한 다음, 하이퍼 크리티컬 지역이 InsideHyperCriticalRegion 반환됩니다.

virtual CriticalRegionType GetCriticalRegionType() const = 0;

Return Value

스레드 프록시가 있는 중요한 영역의 형식입니다.

참고 항목

concurrency 네임스페이스
IUMSScheduler 구조체