다음을 통해 공유


Context::Unblock 메서드

컨텍스트를 차단 해제하고 실행할 수 없게 만듭니다.

virtual void Unblock() =0;

설명

Block 메서드에 대한 해당 호출 전에 Unblock 메서드에 대한 호출이 발생하는 것이 완벽하게 합법적입니다.BlockUnblock 메서드에 대한 호출이 적절히 쌍을 이루는 경우 런타임은 정렬의 자연스런 경쟁을 적절히 처리합니다.Block 호출 전에 오는 Unblock 호출은 Block 호출의 효과를 부정합니다.

이 메서드에서 throw할 수 있는 몇 가지 예외가 있습니다.컨텍스트가 그 자체로 Unblock 메서드를 호출하려고 시도할 경우 context_self_unblock 예외가 throw됩니다.경우 호출 BlockUnblock 제대로 페어링된 것 (예를 들어, 두 개의 호출 Unblock 실행 중인 현재 컨텍스트를 변경 하는) a context_unblock_unbalanced 예외를 throw 합니다.

Unblock 메서드를 호출할 수 있는 다른 스레드의 컨텍스트를 게시하는 코드가 있는 지점과 Block에 대한 실제 메서드 호출이 이루어지는 지점 사이에 중요한 기간이 있음을 유의하십시오.이 기간 동안 차례로 차단 하 고 자체 이유 (예를 들어, 잠금 획득이)에 대 한 차단을 해제할 수 있는 모든 메서드를 호출 해서는 안 됩니다.BlockUnblock 메서드를 호출하면 차단 및 차단 해제 이유를 추적하지 않습니다.하나의 개체만 BlockUnblock 쌍의 소유권을 가져야 합니다.

요구 사항

헤더: concrt.h

네임 스페이스: 동시성

참고 항목

참조

Context 클래스

Context::Block 메서드

개념

작업 스케줄러(동시성 런타임)