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
'공부 > 게임 서버' 카테고리의 다른 글
[게임서버] 스핀락(Spinlock)이란? (0) | 2022.05.25 |
---|---|
[게임서버] 상호배제 - Monitor.Enter, Monitor.Exit (0) | 2022.05.24 |
[게임서버] Interlocked란? (0) | 2022.05.24 |
[게임서버] Temporal locality, Spatial locality (0) | 2022.05.23 |
[게임서버] 메모리 배리어(Memory Barrier)란? (0) | 2022.05.23 |