본문 바로가기
JavaScript/이론 및 용어

싱글 스레드, 멀티스레드

by tokkiC 2022. 7. 26.

cpu 를 프로세서, 연속하여 실행중인 프로그램을 프로세스라고 하며

하나의 코어를 가진 cpu가 작업할 수 있는 프로그램은 한 번에 하나 뿐이다

한줄로 서서 한 명씩 받아가세용

프로그램을 실행하는 작업대를 스레드라고 할 수 있겠다

하지만 동시에 여러 프로그램을 실행 시켜야 할 일이 많으므로 작업대를 병렬 처리하여 동시에 처리하곤 하는데

하나의 작업대에서 선형적으로 이어나가는 것이 순차 실행 - 싱글 스레드 
여러개의 작업대에서 병렬적으로 풀어나가는 것이 병렬 실행 - 멀티 스레드 

라고 한다

그림으로 나타내면 아래와 같다

이미지 출처 : https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread-t5gv4udj

하지만 병렬로 처리하는 멀티 스레드의 경우 말은 병렬이지만 실제로는 하나의 cpu가 이거하고 저거하고 정신없이 움직이며 1인 다역을 소화하고 있는것인데... 이를 context switching 컨텍스드 스위칭 이라고 한다

이리 뛰고 저리 뛰고 하는 중에 시간이 걸리니 굳이 비교하면 싱글스레드보다 멀티스레드가 느릴 수 있다는 단점이 있다

단 작업에 에러가 생겨 멈춰버리면 병렬은 다른 작업은 진행되니 피해가 덜하지만 싱글은 뒤의 모든 작업이 멈춰버린다

거기다 병렬은 스레드간 자원 공유가 가능해 중복 자원을 줄여 효율을 높일 수 있다는 장점도 있다

그 외에도 각각 장단점이 있으나, 요즘같은 멀티 코어 cpu가 대중화된 지금은 싱글 스레드인 프로그램도

cpu코어가 많으니 큰 부담없이 돌릴 수 있게 되었다

댓글