가드 서스펜션

Guarded suspension

동시 프로그래밍에서 가드레드 서스펜션[1] 잠금 장치를 획득해야 하는 운영 관리를 위한 소프트웨어 설계 패턴이며, 운영이 실행되기 전에 사전 조건이 충족되어야 한다.가드 서스펜션 패턴은 일반적으로 객체 지향 프로그램에서의 메서드 호출에 적용되며, 전제 조건(가드 역할)이 충족될 때까지 메서드 호출과 호출 스레드를 중지하는 것을 포함한다.

사용법

가드 서스펜션 패턴은 차단되기 때문에 일반적으로 개발자가 메서드 콜이 유한하고 합리적인 시간 동안 중단된다는 것을 알 때만 사용된다.메서드 콜이 너무 오랫동안 중단되면 전체 프로그램이 느려지거나 중단되어 전제 조건이 충족되기를 기다린다.개발자가 방법 콜 중단이 무기한이거나 허용할 수 없을 정도로 긴 기간일 것이라는 것을 알고 있다면, 방해 패턴을 선호할 수 있다.

실행

Java에서 Object 클래스는wait()그리고notify()안전한 정지를 돕는 방법아래 시행에서, 원래 쿠차나(2004)에서 발견된, 메서드 콜이 성공하기 위한 전제조건이 충족되지 않으면, 그 방법은 마침내 유효한 상태로 들어갈 때까지 기다린다.

공중의 계급  {     동기화된 공허하게 하다 가드드메토드() {         하는 동안에 (!프리컨디션()) {             해보다 {                 // 계속 대기                 기다리다();                 // …             } 잡히다 (중단됨예외 e) {                 // …             }         }         // 실제 작업 구현     }     동기화된 공허하게 하다 alterObjectStateMethod() {         // 개체 상태 변경         // …         // 대기 중인 스레드 알림         통고하다();     } } 

실제 구현의 예로는 다음이 있는 대기열 객체가 있을 것이다.get대기열에 항목이 없을 때 탐지할 수 있는 가드가 있는 방법원스 더put메소드는 다른 방법(예: a)을 통지한다.getmethod), 그 다음get방법은 경계된 상태를 벗어나 통화를 진행할 수 있다.일단 대기열이 비어 있으면get방법은 다시 한 번 경비가 있는 상태로 들어갈 것이다.

참고 항목

메모들

  1. ^ Lea, Doug (2000). Concurrent Programming in Java Second Edition. Reading, MA: Addison-Wesley. ISBN 0-201-31009-0.

참조

  • Kuchana, Partha (2004). "Software Architecture Design Patterns in Java". Boca Raton, Florida: Auerbach Publications. {{cite journal}}: 인용문은 (도움이) 필요하다.