스레드 (Thread)
스레드란 어떠한 프로그램(프로세스) 내에서 실행되는 흐름의 단위
프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.
모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다.
프로세스 - 팀, 스레드 - 팀장 느낌
스레드의 장점
- 응답성 향상
- 자원 공유 효율성 향상
- 동시성
- 간결성
스레드의 단점
- 스레드 간의 상호간섭
- 성능 저하
- 동기화 이슈
- 자원 소비
스레드 C# 예제
멀티스레드
두개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다.
- 쉬운 일을 여러명이서 처리 할 때 사용
- 어려운 일 하나를 여러명이서 동시에 할 때 사용
- CPU 성능을 최대한 활용해야 할 때 사용
멀티스레드의 장점
- 응답성 향상
- 자원 효율성
- 동시성
- 간결성
멀티스레드의 단점
- 임계영역(교착상태)
- 성능 저하
- 동기화 이슈
- 속도
교착 상태 (Dead Lock)
교착상태란,
두개 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황
예를 들어,
A학생과 B학생이 화장실을 가려 한다. A학생은 화장실 키를 가지고 있고, B학생은 휴지를 가지고 있다.
A학생은 B학생에게 휴지를 요구하고, B학생은 A학생에게 키를 요구한다.
하지만 A학생과 B학생이 서로 넘겨주면 볼일을 볼 수 없기에 서로 넘겨주지 못한다.
무한정 대기하는 상황이 발생하고 이를 교착 상태라고 한다.여기서 화장실 키와 휴지는 공유 자원이라 하고, 공유 자원이 속해 있어 교착 상태가 발생할 수 있는 영역을 임계 영역이라고 한다.
공유 자원 (Shared Resource)
시스템 안에서 각 프로세스와 스레드가 함께 접근할 수 있는 자원이나 변수 등을 의미한다.
공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상태를 경쟁 상태라고 한다.
동시에 접근할 때 접근의 순서가 결과값에 영향을 줄 수 있는 상태이다.
임계영역
임계영역이란,
공유되는 자원, 즉 동시접근하려고 하는 자원에서 문제가 발생하지 않게 독점을 보장해줘야 하는 영역이다.
임계영역 C# 예제
교착 상태가 발생
Lock을 사용하여 교착상태가 되는 것을 방지
참고자료
https://wonseok1112.tistory.com/37 임계영역을 해결하기 위한 방법
https://wonseok1112.tistory.com/27
'게임서버' 카테고리의 다른 글
[게임서버] (3) 컴퓨터 네트워크 (0) | 2024.03.11 |
---|---|
[게임서버] (2) 뮤택스, 세마포어, 원자조작 (0) | 2024.03.11 |