싱글 쓰레드와 멀티 쓰레드란?
싱글 쓰레드란?
- 한개의 쓰레드에 모든 컨텐츠 로직을 처리하는 설계를 말합니다.
멀티 쓰레드란?
- 여러개의 쓰레드에서 동일한 작업 또는 서로 다른 작업을 처리하는 설계를 말합니다.
싱글 쓰레드 장.단점
장점
- 머리 쓰레드로 인한 동기화 문제를 고려하지 않고 개발할 수 있어서 생산성 및 유지 보수성에 이점이 있습니다.
- 멀티 쓰레드 환경에서 동기화로 인해 발생되는 잦은 커널 모드 전환 및 컨택스트 스위칭 비용을 아낄 수 있습니다.
단점
- 멀티 코어 CPU를 활용하기에 적합하지 못합니다.
- 사용자에 대한 응답을 하나의 쓰레드로 처리하기 때문에 응답성이 떨어집니다.
- 여러 개의 작업을 하나의 쓰레드로 일렬로 처리할 수밖에 없습니다.
멀티 쓰레드 장.단점
장점
- 멀티 코어 CPU를 적극 활용할 수 있습니다.
- 멀티 쓰레드로 여러 개의 작업을 처리할 수 있기 때문에 병렬성을 극대화할 수 있습니다.
- Accept, Send, Recv를 담당하는 쓰레드를 만들어서 설계를 단순화할 수 있습니다.
- 사용자 응답을 위한 별도의 쓰레드를 만들어서 사용자에게 보다 빠르게 응답할 수 있습니다.
단점
- 멀티 쓰레드 간의 동기화 작업으로 인한 경합이 자주 발생될 경우 오히려 성능이 떨어질 수 있습니다.
- 프로그래머가 멀티 쓰레드 환경을 고려하며 코딩해야 하기 때문에 컨텐츠 생산성 및 유지 보수성이 떨어질 수 있습니다.
- 쓰레드가 처리하는 작업량보다 컨텍스트 스위칭 비용이 더 클 경우 멀티 쓰레드를 사용함으로써의 이점이 없습니다.
싱글, 멀티 쓰레드 결론
- 무조건 멀티 쓰레드가 좋다고 생각하진 않습니다. 성능의 중요성이 떨어지는 프로젝트라면 되도록 싱글 쓰레드로 개발하여 생산성 및 유지보수성을 증가 시키는 것도 좋은 방법이라 생각됩니다.
하지만, 사용자 응답성 및 성능을 중요시 한다면 싱글 쓰레드는 적합하지 못하다고 생각합니다. 그리고 멀티 쓰레드 설계를 통해 Accept, Send, Recv 로직을 담당하는 쓰레드를 별도로 둠으로써 오히려 구조적 단순화의 이점을 얻을 수 있기 때문에 여러가지 상황을 고려한 쓰레드 설계가 필요하다 생각합니다.
'멀티 쓰레드' 카테고리의 다른 글
데드락 ( Deadlock )에 대한 설명과 데드락 회피 방법 (0) | 2022.09.25 |
---|---|
Interlocked 계열 함수에 대한 설명과 사용 시 주의 사항 (0) | 2022.09.22 |
Windows의 유저 모드 동기화 객체 & 커널 모드 동기화 객체 (0) | 2022.09.21 |
스핀 락 ( Spin Lock ) 이란? (0) | 2022.09.19 |