싱글 쓰레드와 멀티 쓰레드란?

 

싱글 쓰레드란?

  • 한개의 쓰레드에 모든 컨텐츠 로직을 처리하는 설계를 말합니다.




멀티 쓰레드란?

  • 여러개의 쓰레드에서 동일한 작업 또는 서로 다른 작업을 처리하는 설계를 말합니다.




싱글 쓰레드 장.단점

 

장점

 

  • 머리 쓰레드로 인한 동기화 문제를 고려하지 않고 개발할 수 있어서 생산성 및 유지 보수성에 이점이 있습니다.
  • 멀티 쓰레드 환경에서 동기화로 인해 발생되는 잦은 커널 모드 전환 및 컨택스트 스위칭 비용을 아낄 수 있습니다.




단점

 

  • 멀티 코어 CPU를 활용하기에 적합하지 못합니다.
  • 사용자에 대한 응답을 하나의 쓰레드로 처리하기 때문에 응답성이 떨어집니다.
  • 여러 개의 작업을 하나의 쓰레드로 일렬로 처리할 수밖에 없습니다.




멀티 쓰레드 장.단점

 

장점

  • 멀티 코어 CPU를 적극 활용할 수 있습니다.
  • 멀티 쓰레드로 여러 개의 작업을 처리할 수 있기 때문에 병렬성을 극대화할 수 있습니다.
  • Accept, Send, Recv를 담당하는 쓰레드를 만들어서 설계를 단순화할 수 있습니다.
  • 사용자 응답을 위한 별도의 쓰레드를 만들어서 사용자에게 보다 빠르게 응답할 수 있습니다.




단점

  • 멀티 쓰레드 간의 동기화 작업으로 인한 경합이 자주 발생될 경우 오히려 성능이 떨어질 수 있습니다.
  • 프로그래머가 멀티 쓰레드 환경을 고려하며 코딩해야 하기 때문에 컨텐츠 생산성 및 유지 보수성이 떨어질 수 있습니다.
  • 쓰레드가 처리하는 작업량보다 컨텍스트 스위칭 비용이 더 클 경우 멀티 쓰레드를 사용함으로써의 이점이 없습니다.




싱글, 멀티 쓰레드 결론

  • 무조건 멀티 쓰레드가 좋다고 생각하진 않습니다. 성능의 중요성이 떨어지는 프로젝트라면 되도록 싱글 쓰레드로 개발하여 생산성 및 유지보수성을 증가 시키는 것도 좋은 방법이라 생각됩니다.


    하지만, 사용자 응답성 및 성능을 중요시 한다면 싱글 쓰레드는 적합하지 못하다고 생각합니다. 그리고 멀티 쓰레드 설계를 통해 Accept, Send, Recv 로직을 담당하는 쓰레드를 별도로 둠으로써 오히려 구조적 단순화의 이점을 얻을 수 있기 때문에 여러가지 상황을 고려한 쓰레드 설계가 필요하다 생각합니다.

+ Recent posts