본문 바로가기
카테고리 없음

멀티스레딩은 왜 빠를까 (병렬 처리의 원리)

by by_merry 2026. 5. 5.

프로세스와 스레드 개념을 이해하고 나면 자연스럽게 궁금해지는 게 있다. “그럼 스레드를 여러 개 쓰면 왜 더 빠른 거지?” 나도 처음에는 단순하게 “여러 개니까 빠르겠지” 정도로 생각했다. 그런데 실제로는 상황에 따라 체감 속도가 크게 달라지기도 하고, 어떤 경우에는 오히려 느려지는 경우도 있었다. 이걸 이해하려면 멀티스레딩이 어떻게 동작하는지 조금 더 구조적으로 볼 필요가 있다.

 

멀티스레딩은 작업을 동시에 처리하는 것이 아니라 ‘나눠서’ 처리하는 방식이다

많은 사람들이 멀티스레딩을 “모든 작업을 동시에 실행하는 것”이라고 생각하는데, 실제로는 조금 다르다. 핵심은 하나의 작업을 여러 개로 나눠서 처리하는 데 있다. 예를 들어 큰 파일을 다운로드한다고 하면, 하나의 스레드로 처리할 수도 있지만, 여러 개의 스레드로 나눠서 동시에 받아오면 더 빠르게 끝낼 수 있다.

이걸 처음 체감했던 건 파일 다운로드 프로그램을 사용할 때였다. 같은 파일인데도 멀티스레드를 사용하는 경우가 훨씬 빠르게 내려받아지는 걸 보고 “왜 이런 차이가 나지?”라는 생각이 들었다. 나중에 알고 보니까 파일을 여러 조각으로 나눠서 동시에 받는 구조였다.

즉, 멀티스레딩은 단순히 동시에 실행하는 게 아니라, 일을 쪼개서 효율적으로 처리하는 방식이라고 보는 게 더 정확하다.

CPU 코어가 여러 개일 때 진짜 ‘병렬 처리’가 이루어진다

멀티스레딩이 빠른 이유 중 하나는 CPU 구조와 관련이 있다. 요즘 대부분의 CPU는 여러 개의 코어를 가지고 있다. 이 코어들이 각각 독립적으로 작업을 처리할 수 있기 때문에, 여러 스레드를 동시에 실행할 수 있다.

예를 들어 4코어 CPU라면 최대 4개의 작업을 동시에 처리할 수 있다. 이게 진짜 의미의 병렬 처리다. 각 코어가 서로 다른 작업을 맡아서 처리하기 때문에 전체 속도가 빨라진다.

하지만 코어 수보다 스레드가 많아지면 상황이 달라진다. 이때는 CPU가 아주 빠르게 스레드를 번갈아 실행하는 방식으로 처리한다. 겉으로 보면 동시에 실행되는 것처럼 보이지만, 실제로는 짧은 시간 단위로 번갈아가면서 실행되는 것이다.

나도 이걸 알고 나서야 “왜 어떤 작업은 멀티스레딩이 효과적이고, 어떤 건 아닌지” 조금 이해가 되기 시작했다.

멀티스레딩이 항상 빠른 것은 아니다

멀티스레딩이 무조건 좋은 것처럼 보이지만, 실제로는 그렇지 않은 경우도 많다. 특히 스레드가 너무 많아지면 오히려 성능이 떨어질 수 있다. 이유는 간단하다. 스레드를 관리하는 데에도 비용이 들기 때문이다.

예를 들어 스레드를 계속 생성하고 전환하는 과정에서 CPU가 추가적인 작업을 해야 한다. 이걸 ‘컨텍스트 스위칭’이라고 하는데, 이 비용이 쌓이면 오히려 전체 성능이 떨어질 수 있다.

또 하나는 메모리 공유 문제다. 여러 스레드가 같은 데이터를 동시에 건드리면 충돌이 발생할 수 있어서, 이를 제어하기 위한 추가적인 처리가 필요하다. 이 과정도 성능에 영향을 준다.

나도 예전에 간단한 프로그램을 만들면서 스레드를 무작정 늘렸다가 오히려 속도가 느려진 경험이 있었다. 그때 느낀 게 하나 있다. 멀티스레딩은 “많이 쓴다고 좋은 게 아니라, 적절하게 써야 효과가 있다”는 점이다.

한 줄로 정리하면 멀티스레딩은 작업을 여러 개로 나눠 CPU 코어를 활용해 동시에 처리함으로써 속도를 높이는 방식이지만, 상황에 따라 오히려 성능이 떨어질 수도 있는 구조다.