멀티 스레드 장단점

CODEDRAGON Development/Java

반응형

  

멀티 스레드 장점과 단점

장점

단점

·       응답성이 좋습니다

·       자원공유를 효율적을 할 수 있습니다.

·       작업이 분리되어 코드가 간결해집니다.

·       구현하기 어렵습니다

·       테스트, 디버깅 하기 어렵습니다.

·       전체프로세스에 영향을 줍니다.

·       성능 저하가 동반됩니다.

·       동기화에 주의해야 합니다.

·       교착상태가 발생하지 않도록 주의해야 합니다.

·       각 스레드가 효율적으로 고르게 실행될 수 있도록 해야 합니다.

 

   

멀티 스레드는 응답성을 높여줍니다.

  • 사용자 대화형 프로그램의 응답성을 높일 수 있습니다.
  • 하나의 프로세스의 여러 스레드를 생성하여 스레드에 각기 다른 작업을 하게 함으로써 특정 작업을 하면서도 사용자로부터 명령을 입력받게 할 수 있습니다.

   

   

   

멀티 스레드는 자원공유 효율성을 높여줍니다.

프로세스간 데이터 교환보다 번거로운 작업 없이 더 효율적입니다.

  • IPC를 통한 프로세스간 데이터 교환
  • 스레드간 데이터 교환

   

   

o IPC를 통한 프로세스간 데이터 교환

프로세스간 데이터 교환을 하려면 소켓이나 공유 메모리같은 IPC(Inter Process Communicatin)을 이용해서 데이터 교환을 해야 합니다.

   

   

   

o 스레드간 데이터 교환

프로세스를 뛰우기 위해 메모리와 자원을 할당하는 작업없이 이미 프로세스에 할당된 자원과 메모리를 그대로 사용하여 스레드를 생성하여 작업하므로 메모리와 자원 할당에 필요한 비용을 줄일 수 있습니다.

   

   


   

멀티 스레드에 문제 발생시 전체 프로세스가 영향을 받습니다.

  • 멀티프로세스 구조
  • 멀티스레드 구조

   

o 멀티프로세스 구조

멀티프로세스 구조에서 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스 하나만 죽는 것 이상으로 다른 곳에 영향이 확산되지 않습니다.

   

o 멀티스레드 구조

멀티스레드 구조에서 자식 스레드중 하나에 문제가 생긴 경우 전체 프로세스가 영향을 받게 됩니다.

   

   

   

성능 저하

  • 너무 많은 스레드를 생성해서 사용하는 경우 성능이 더 떨어질 수 있습니다.
  • 스레드가 CPU를 사용하기 위해서는 작업간 전환(Context Switching)을 해야 하는데, 이 작업간 전환은 많은 비용을 소모하는 작업입니다.






반응형