2011년 5월 25일 수요일

Orphaned Thread(고아 쓰레드)

@ 다중 쓰레드 프로그래밍은 근본적으로 비확정적인 성질을 가지므로 잠재적인 오류의 가능성은 커지기 마련이다. 더욱이 이런 종류의 오류는 재현해 내는게 좀처럼 쉽지 않은 경우가 많아 사무실에서의 우울한 주말을 보낼 가능성을 더욱 높여준다.
* 패턴 이름 : 고아 쓰레드
* 증상 : 다중 쓰레드 프로그램에서 프로그램이 멈춘 것과 같이 보인다. 이때 표준 에러 출력으로 스택 추적 값이 출력될 수도 있고, 그렇지 않을 수도 있다.
* 원인 : 어떤 쓰레드가 처리되지 않은 예외로 인해 종료된 다른 쓰레드에서 데이터가 입력 되기를 기다리고 있기 때문이다.
* 해결책과 예방책 : 예외 처리부를 메인 쓰레드 안에 작성해 놓고 다른 여러 쓰레드의 예외 사황을 이쓰레드에 알리도록 한다. 다른 방법으로는 비정상 종료되는 쓰레드에 처리 코드를 집어 넣어 이 쓰레드를 사용하는 모든 곳에서 이러한 정보를 알 수 있도록 한다.
-- 썬에서는 쓰레드 클래스의 stop메쏘드를 더이상 사용해서는 안되는 메소드로 분류하였다. 이 메소드는 그 상태와 상관없이 쓰레드를 종료 시키므로 자원이 제대로 반환되지 않은채로 쓰레드가 종료되는 경우도 있었고, 이는 언어의 보안 모델을 위반하는 것이기 때문이다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...