Header

  1. View current page

    prOgramiac

Profile_image?t=1275288230&type=small
Hallo? :-)
1 32

멀티스레드 프로그램 평가기준

멀티스레드 프로그램의 평가 기준

아래의 기준들은 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

Tags

History

Last edited on 10/04/2009 13:49 by mOer

Comments (3)

  • mcsong

    내용 좀 퍼가도 될까요??

    05/31/2010 14:42
  • mOer

    물론이죠. 출처는 표시해 주시면 좋겠습니다~

    05/31/2010 15:34
  • mcsong

    http://www.sjava.net/184 에 내용 퍼가고 출처 표시하였습니다. 감사합니다. ^^

    05/31/2010 19:55
You must log in to leave a comment. Please sign in.