• 스레드 : 일을 처리하는 녀석
  • 싱글 스레드 : 혼자만 일을 처리함
  • 멀티 스레드 : 작업자를 N개생성하고 여러명에게 일을 시킴


사실은 이렇게 생긴 녀석(CPU)이 일을 처리함

  • Core : 물리적으로 실제 연산을 하는 녀석
  • Thread : 논리적인 작업자로, Core의 시간을 잘게 나누어 동시에 실행되는것처럼 보이며, 실제 작업자수(Thread) 만큼 속도증가는 이루어지않는다.


생각하는 속도(CPU)와 생각의 연속성을 위해 잠시 저장해두는것(RAM) 과 그것을 필기하거나 표현하는 속도(DISK,DISPLAY)는 다르다.

실제 작업 완료 시간은, Thread의 개수보다 IO의 성능에 더 큰 영향을 끼친다. 그리고 이러한 IO가 느리다란것을 인지하고 배려하는

Thread의 스케쥴링또한 전체 완료시간을 줄이는데 중요한 요소중 하나이다. 

(Disk크가 읽기가 끝날떄까지 모두가 아무일도 못한다고 하면, 그것은 크게 잘못된 것이다.) 


멀티스레드 프로그래밍이 어려운이유? 복잡한 일을 분업하여 충돌없이 나눠서 일을 하는것은 현실세계에서도 쉽지 않다.

커피머신은 2대라고 가정한다고 하면, 몇명의 종업원이 있어야 가장 많은 커피주문을 처리할수 있을까요?

여기서 커피머신은 제한된 리소스이고, 종업원수는 스레드와 비교할수 있습니다.


위와 같은 문제를 처리하기 위해 멀티스레딩 프로그래밍은 시스템문제를 해결하는 것에 가깝기 때문에 한계가 있을수 있으며

동시성처리를 위해 다양한 프로그래밍 모델로 진화하고 있습니다.

심화학습 Next : Terminology




  • No labels
Write a comment…