2010-07-19 4 views
2

다양한 종류의 이벤트를 처리 할 특정 메서드가있는 개체를 만들었고 응용 프로그램이 실행될 때까지 살아있을 것입니다. 또한 각 메소드를 가리키는 개별 대리자를 만들고 x 개의 스레드로 참조됩니다. 주어진 y와 z 스레드가 위임자를 사용하여 method1을 호출하면 z 스레드는 method1을 사용하기 전에 y 스레드가 완료 될 때까지 기다릴 것입니까? 아니면 동시에 호출 할 수 있습니까?멀티 스레딩 및 위임자 실행

답변

2

잠금 또는 다른 종류의 뮤텍스를 사용하지 않는 한 각 스레드는 대리인 뒤에있는 메서드를 병렬로 호출합니다. 그들은 서로를 기다리지 않을 것이다.

스레드 안전이 작동하는 곳입니다. 메서드를 동시에 실행하는 두 개의 서로 다른 스레드에 대해 본질적으로 나쁜 것은 없지만 해당 메서드가 해당 소유자 클래스의 인스턴스 멤버를 처리하고 이러한 스레드가 동시에 단일 인스턴스에 대해 작업하는 경우 스레드 충돌 및 버그가 발생할 위험이 있습니다 치명적인 오류에서 이상하고 미묘하며 재현하기 어려운 행동에 이르기까지 다양합니다. 엄지 손가락 규칙은 쓰레드를 섞지 말고 피할 수있게 해줍니다.

+0

감사합니다. SyncRoot 객체처럼 처리되는 객체의 일부인 잠금 메커니즘을 제공하려는 경우 다른 스레드가 다른 스레드를 기다리게합니까? 또는 기다릴 유일한 스레드는 동일한 객체를 처리하고있는 스레드입니까? – powerbox