프로그래밍을 할때 성능에 대해 생각할 때 병렬 처리 역시 하나의 최적화 방법중 하나인데.
이를 위해 결국 멀티 프로세싱을 할지, 멀티 쓰레드를 할지 결정하는거잖아요?
결국 context switching 등에서 조금 더 이점이 있는 쓰레드를 사용하게 되는데요.
근데 하나 궁금한건 제가 배울때는 CPU에서 말하는 core가 하나의 프로세스가 동작하는 아키텍쳐로 알고 있습니다.
그럼 코어가 6개더라도 그냥 for로 무한 루프를 돌리는 프로그램을 만든다면 당연 1개의 코어만 해당 프로세스를 동작 시키겠죠? 멋대로 코어를 여러개 사용해서 병렬 처리 할 것같지는 않습니다.
그럼 1개의 프로세스가 100개의 쓰레드를 가지고 있고 1개의 코어가 16개의 쓰레드를 지원한다고 가정해보겠습니다.
그럼 1개의 코어가 16개의 쓰레드가 동시에 돌아가는건 당연하겠지만 나머지 84개의 쓰레드를 다른 코어가 지원해 줄까요? 만일 안됀다면 1개의 코어만 동작하고 나머지 5개 코어는 놀게 됀다는 결론이 나오는데...