카테고리 없음
Go ) 동기화 객체
코드베어
2020. 6. 10. 08:57
Go 언어에서는 채널 이외에도 고루틴의 실행 흐름을 제어하는 동기화 객체를 제공한다.
대표적인 동기화 객체는 다음과 같다.
- Mutex: 상호배제(mutual exclusion)라고도 하며 여러 스레드(고루틴)에서 공유되는 데이터를 보호할 때 주로 사용한다.
- RWMutex: 읽기/쓰기 뮤텍스이다. 읽기와 쓰기 동작을 나누어서 잠금(락)을 걸 수 있다.
- Cond: 조건 변수(condition variable)이다. 대기하고 있는 하나의 객체를 깨울 수도 있고 여러 개를 동시에 깨울 수도 있다.
- Once: 특정 함수를 딱 한 번만 실행할 때 사용한다.
- Pool: 멀티 스레드(고루틴)에서 사용할 수 있는 객체 풀이다. 자주 사용하는 객체를 풀에 보관했다가 다시 사용한다.
- WaitGroup: 고루틴이 모두 끝날 때까지 기다리는 기능이다.
- Atomic: 원자적 연산이라고도 하며 더 이상 쪼갤 수 없는 연산이라는 뜻이다. 멀티 스레드(고루틴), 멀티코어 환경에서 안전하게 값을 연산하는 기능이다.