스레드의 장단점은 다음과 같음

  • 메모리 오버헤드가 적다
    • 프로세스는 자신만의 주소 공간, 스레드 집합, 변수 값의 복사본 가지는 완전히 독립적 대상
    • 반면, 스레드는 부모 스레드가 복제 되지 않음(그저 같은 프로세스에 속할 뿐)
    • fork() 함수에 비해 메모리 오버헤드 훨씬 줌
    • 이런 특성 덕에 경량 프로세스 라고도 불림
    • 별도의 자원 할당, 해제 필요 없어서 생성, 종료에 드는 비용도 훨씬 저렴
  • 정보 교환 오버헤드 적다
    • 프로세스는 자기만의 메모리 영역 가짐. 따라서 프로세스간 정보 교환은 별도의 우회 수단 필요
    • 반면, 스레드는 주소 공간 공유하므로 공유된 주소 공간에 읽기 쓰기 통해 별도의 우회 나 오버헤드 없이 정보 교환 가능
    • 이런거 땜에 SMP 시스템에서 널리 쓰임
  • 동기화가 필요함(단점)
    • 프로세스 끼리는 완전 격리이므로 하나가 충돌일으켜도 다른거 영향 X
    • 그러나 스레드는 한 프로세스 내부의 모든 스레드는 같은 자원 공유
      • 이 중 하나 충돌하거나 데이터 깨지면 나머지 스레드도 영향 받을 수 있음
    • 이런거 방지하려면
      • 공유 자원 접근 잘 동기화
      • 스레드를 잘 제어