공부/게임 서버

[게임서버] 스레드(Thread)란?

돌멩이수프 2022. 5. 23. 21:58
728x90

스레드란 프로그램을 제어하는 단위를 말한다.

 

스레드(Thread) -> 프로세스(Process) -> 프로그램(Program). 예전에는 하나의 프로세스로 하나의 프로그램을 실행하는 데에 문제가 없었지만 프로그램이 복잡해지면서 더 작은 단위의 스레드가 생겼다. 

하나의 프로그램에 하나의 스레드만 있는 것은 싱글 스레드(Single Thread),

둘 이상의 스레드가 있는 것을 멀티 스레드(Multi Thread)라 한다.

 

 

 

싱글 스레드(Single Thread) 장점

  • 멀티 스레드에서 일어나는 문제인 context switching이 없음. 
  • context switching으로 인해 단순 작업에서 불필요한 시간이 늘어나지 않음.
  • 여러개의 스레드를 사용하면 함께 사용하는 자원에 대한 통제를 제어해야 하나, 싱글 스레드에서는 불필요함.

 

싱글 스레드(Single Thread) 단점

  • 모든 작업을 순차적으로 실행함. 1, 2, 3이라는 작업이 순서대로 있을 경우 3을 실행하기 위해서 반드시 1과 2가 실행되기를 기다려야함.
  • 여러개의 CPU를 활용할 수 없음.

 

 

멀티 스레드(Multi Thread) 장점

  • 새로운 작업을 위해 프로세스를 만드는 것보다 스레드를 만드는 것이 훨씬 경제적임.
  • 여러 작업을 동시에 실행할 수 있음.
  • 다른 스레드와 정보, 메모리 등의 자원을 공유하여 효율성이 오름.

 

멀티 스레드(Multi Thread) 단점

  • context switching으로 인한 문제가 생김.
  • 단순 계산은 싱글 스레드보다 시간이 오래걸림.

 

728x90