멀티스레드 프로그램 평가기준
멀티스레드 프로그램의 평가 기준
아래의 기준들은 Doug Lea 분류를 기준으로 한 것이며, 이런 류의 평가 기준은 대개 상반(trade-off)되는 경우가 있습니다.
필수
-
안전성(safety) - 객체를 망가트리지 않을 것
- "망가진다"는 것은 비유적 표현으로 객체의 필드가 예상 외의 값을 취하는 것을 의미합니다.
- 복수의 스레드가 이용해도 안전성이 유지되는 클래스를 스레드 세이프(thread-safe)한 클래스라고 하며 자바 API에는 명시되어 있습니다.
- 생존성(liveness) - 필요한 처리가 이뤄질 것
옵션
-
재사용성(resuability) - 클래스를 다시 사용할 수 있는 것
- 멀티 스레드 프로그램에서는 스레드 배타제어, 구조, 방침을 캡슐화 하는 것이 관건이며 Java SE 5.0의 java.util.concurrent 패키지에서 이를 잘 실현하고 있습니다.
-
수행 능력(performance) - 고속 / 대량으로 처리할 수 있을 것
- throughput - 단위 시간 당 처리 수
-
응답성(responsiveness) - 요청을 한 뒤 반응이 나타날 때까지 걸리는 시간
- GUI 프로그램에서는 요청의 완료까지 걸리는 시간보다 처리 시작까지의 시간을 중요하게 생각하기도 합니다. 여기서 완료는 요청 -> 처리 -> 응답 까지의 시간이며 처리 시작은 완료까지의 시간은 좀 더 걸리더라도 클라이언트에게 먼저 응답(~을 처리 중입니다 등)을 보내는 것을 말합니다.
- 응답성이 높은 프로그램은 대기 시간(latency)이 짧다고 표현합니다.
- 용량(capacity) - 동시에 처리할 수 있는 수
- 그 밖에 효율(efficiency), 확장성(scalability), 저하(degradation) 등이 있습니다.
평가 기준 정리
멀티 스레드 시스템에서 안전성과 생존성이 지켜지지 않으면 제대로된 프로그램이라고 할 수 없습니다. 따라서 이 필수 조건을 만족한 상태에서 재사용성과 수행 능력을 어떻게 높이느냐가 관건이 되겠습니다.
참조
Java 언어로 배우는 디자인 패턴 입문 멀티 쓰레드편, Yuki Hiroshi
Comments (3)
내용 좀 퍼가도 될까요??
05/31/2010 14:42물론이죠. 출처는 표시해 주시면 좋겠습니다~
05/31/2010 15:34http://www.sjava.net/184 에 내용 퍼가고 출처 표시하였습니다. 감사합니다. ^^
05/31/2010 19:55