Q. 스레드를 많이 쓸수록 항상 성능이 좋아질까요?
-> 멀티스레딩 환경에서 스레드 수와 실제 성능의 상관관계를 묻는 질문이다.
스레드가 많아질수록 CPU 코어에서 필요한 컨텍스트 스위칭(Context Switching)이 증가합니다. 컨텍스트 스위칭은 CPU가 스레드 간 전환을 위해 수행하는 작업으로, 이 과정에서 실제 애플리케이션 코드의 실행은 일시 중지됩니다. 이러한 스위칭에 소요되는 CPU 시간은 오버헤드(간접 비용)를 발생시키며, 스레드가 너무 많으면 이 오버헤드가 증가합니다.
오버헤드의 증가는 CPU의 코어 수에 비해 상대적으로 높은 자원 경쟁을 유발하게 되는데, 이로 인해 레이스 컨디션, 데드락, 기아 상태와 같은 문제를 야기할 수 있습니다.
따라서, 스레드 수가 과도하게 많아지면 오버헤드로 인해 성능 향상이 아닌 오히려 한계에 부딪힐 수 있습니다.