Home [멀티쓰레드] 멀티쓰레드 개론
Post
Cancel

[멀티쓰레드] 멀티쓰레드 개론

멀티쓰레드

multithread 출처:싱글스레드(Single thread)vs멀티스레드(Multi thread)

쓰레드란 어떠한 프로그램 내에서 실행되는 흐름의 단위이다.
둘 이상의 쓰레드가 동시에 작업을 수행하는 것을 멀티쓰레드라고 한다.
실제로는 프로세서(CPU 코어)가 여러 쓰레드를 빠르게 번갈아가며 실행시키는데 이로 인해 여러 쓰레드가 동시에 실행되는 것처럼 보이게 된다.

컴퓨터에서 동시에 처리할 수 있는 최대 작업 수는 CPU 코어 수와 같다.
그렇기에 CPU 코어 수보다 더 많은 쓰레드가 실행되면 각 코어는 여러 쓰레드를 번갈아가며 실행하게 된다.

멀티쓰레드를 사용할 경우 작업들을 병행적으로 실행시킬 수 있어 효율적일 수 있지만 실행 할 쓰레드가 교체되는 것을 context switching이라고 하는데 context switching 작업이 결코 가볍지 않기 때문에 많은 수의 쓰레드를 실행시키는 것이 꼭 좋은 성능을 보여주는 것은 아니다.

multithread_2 출처:멀티쓰레드

또한 멀티쓰레드를 메모리영역에서 보면 Heap 영역과 데이터 영역은 서로 공유하며 사용하고 스택 영역은 각 쓰레드마다 구분되게 할당되어 사용한다. 그렇기에 멀티쓰레드 환경에서 스택 영역에 접근하는 것은 큰 문제가 되지 않지만 동시에 공유되는 영역에 접근하게 되는 것은 문제가 발생할 수 있다.

This post is licensed under CC BY 4.0 by the author.