Server Programmer 들에게 동기화란 매우 민감하며 중요한 주제이다.
동기화 기법이란 Thread들에게 특정 Resource에 대한 접근 권한을 주는 기법이다.
각각의 동기화 기법들의 종류, 간단한 설명을 알아보자.
Lock
- 가장 기본적인 동기화 기법이며 critical section을 활용하여 동기화를 한다.
Mutex
- 단 하나의 Thread 접근을 허용한다. [모든 프로세서에서 접근 가능.]
- 이름을 지정하여 여러 Process가 접근 가능.
Shemaphore
- 지정된 갯수만큼의 Thread 접근을 허가한다. [갯수 지정가능한 Mutex 느낌]
-> 임계영역에 진입 시 lock, 임계영역 탈출 후 unlock을 하여 접근횟수를 관리한다.
- Mutex처럼 이름을 통해 접근이 가능.
Event
- 신호, 비신호 두 가지의 상태가 가능하다. [Manual mode, Auto reset mode]
- 임계영역 탈출 시 자동으로 비신호상태로 바꿔주는 Auto Reset 여부를 설정이 가능하다.
- 임계영역 진입 시 Non signaled 상태에서 signaled 상태로 변경한다.
- 타 Thread 들은 signaled 상태인 event에 접근 시 대기한다.
- Auto Reset Event 가 아닌 경우 임계 영역을 탈출 한 후 Signal 상태로 계속 존재한다.
-> ResetEvent를 통해서 Non signaled 상태로 변경해줘야함.
- 보통 Event의 경우 Thread간의 실행순서를 지켜야 하는 경우 많이 사용한다.
Atomic
- 특정 int형 변수에 대한 접근을 제한하는 기법
- Interlock을 통해서 Increase, Decrease, Compare 가 일반적으 로 사용된다.
'Server' 카테고리의 다른 글
Lock Free 알고리즘에 대하여 (0) | 2021.06.25 |
---|---|
Process와 Thread의 차이점 (0) | 2021.06.20 |
Socket 처리 방법들 : IOCP와 ASIO 방식 등등 (0) | 2021.06.20 |
서버 Socket 설정하는 방법들 (0) | 2019.09.06 |
게임 서버에서의 Log 구성 (0) | 2019.09.04 |