2016년 12월 5일 월요일

멀티 스레딩 첫번째

멀티 스레딩?
  • 한 프로세스를 여러 수행단위(스레드)로 나눠 처리하는 것을 말함
장점
  • 사용자에 대한 응답성이 향상됨
  • 자원을 공유하고 코드 공유의 이점이 있음
  • 자신이 속한 프로세스의 자원들을 공유하기 때문에 경제적임
  • 멀티 프로세서인 경우에 각 스레드가 병렬로 수행할 수 있음
단점
  • 멀티 스레드는 캐시나 TLB(변환 색인 버터)와 같은 하드웨어 리소스를 공유할 때 서로 간섭할 수 있음
  • 하나의 스레드만 실행 중인 경우 실행 시간이 개선되지 보단 오히려 지연될 수 있음
  • 멀티 스레드의 수행이 예측 불가함
  • 실행 순서가 보장되지 않음
  • 테스트 및 디버깅이 어려움
프로그래밍시 주의할 점
  • 컨텍스트 스위칭에 상당한 비용이 소모되기 때문에 너무 많은 스레드는 성능이 더 떨어짐
참고
  • https://ko.wikipedia.org/wiki/%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9
  • http://codedragon.tistory.com/3525