흔한 덕후의 잡동사니
스레드에 관하여 (왜 사용하는가?) 본문
스레드를 사용하는 이유는 보통 4가지이다.
1. 병렬성의 극대화
2. 사용자에 대한 향상된 응답성
3. 멀티코어 CPU의 사용률 증가
4. 단순화된 설계
' 병렬성의 극대화 '는 공유자원을 사용하지 않는 일감을 여러 스레드가 동시에 실행할 시 최종적으로 걸리는 시간이 줄어드는 것을 의미한다.
' 사용자에 대한 향상된 응답성 '의 경우 사용자가 보는 반응성을 의미하는데, 예를들어 게임 시작 버튼을 눌렀을때 관련 메모리 할당 및 가동작업이 실행되고, 이후 사용자에게 인게임 씬을 보여준다면, 그동안 사용자 입장에선 게임이 멈춘 것 처럼 보이며 답답함을 유발할 것이다. 이를 따로 스레드를 만들어두어 게임 시작버튼을 누르면 해당 스레드가 관련 UI를 보여주는 동안 기존 스레드가 작업을 진행하고, 완료된 이후 인게임으로 넘어간다면, 로딩 관련 최종적인 시간은 더 많이 걸릴 수 있어도 사용자 입장에선 응답성이 빠르기에 보다 쾌적인 환경을 보장받는다 할 수 있다.
' 멀티코어 CPU의 사용률 증가 ' , 요즘 CPU를 보면 물리적인 한계로 인해 클럭을 증가하는데 한계가 있어 여러 코어를 한 CPU에 넣는 방식으로 설계되고 있다. 이런 CPU의 모든 자원을 사용하기 위해선 코어 갯수만큼 여러 스레드들을 만들어 사용하는 것이 주어진 자원을 버리는 것 없이 전부 사용하는 것이다.
' 단순화된 설계 ', 성능에 관계없이 코드를 작성함에 있어 보다 단순화된 설계를 위해 스레드를 만드는 경우이다. 예를 들어 1초에 한번씩 실행되어야하는 작업이 있다면, 기존 코드 중간중간 1초가 지났는지 여부를 판단하는 부분을 넣을 필요 없이 스레드를 하나 만들어 Sleep(1000)을 반복적으로 실행하며 작업을 수행하는 것이 코드상으로 훨씬 깔끔하다.