OS 상에 여러가지 응용 프로그램을 동시에 실행 시킬 수 있는 것도 멀티쓰레드 덕분임.
코어가 하나, 쓰레드가 하나 뿐이라면
MMO 서버가 있다면 다른 응용 프로그램보다 우선순위를 둠.
그러면 다른 응용 프로그램은 잘 실행되지 않는 현상이 일어나게 됨
이게 기아현상
그러나 코어가 여러 개, 멀티 쓰레드라면,
동시에 여러 응용프로그램을 동시에 실행할 수 있음
그런데 쓰레드를 무작정 많이 늘리게 되면,
부하가 많이 걸림
CPU 코어가 하나만 실행하다가 다른 쓰레드로 옮겨타는 과정은 무거운 작업임.
따라서, 코어 수 만큼의 쓰레드를 실행시키면 이상적인 상황이 됨.
모든 쓰레드들은 Heap 영역(new), 데이터 영역(static 변수)은 그대로 사용하던 걸 공유해서 사용하게 됨.
그러나 스택 영역은 다 구분 되어서 자신 만의 스택 영역을 가짐.
즉, 공유해서 사용하는 영역을 여러 쓰레드가 사용하는 것은 문제가 발생하게 됨.
=> 서로 얽히고 설키다 보면 한쪽으로만 모이기도 함.
관리가 잘 안되면, 하나의 쓰레드를 두는 것만 못한 상황이 발생
728x90
반응형
댓글