
동기화 프리미티브
sync.Mutex, RWMutex, Once, Pool, Map, Cond, 원자적 연산
22 면접 질문·
Mid-Level
1Go에서 sync.Mutex란 무엇입니까?
1
Go에서 sync.Mutex란 무엇입니까?
답변
sync.Mutex(상호 배제 잠금)는 한 번에 하나의 고루틴만 임계 영역에 접근할 수 있도록 보장하는 동기화 프리미티브입니다. Lock을 호출하면 mutex를 사용할 수 있을 때까지 블록되고, Unlock은 다른 고루틴을 위해 이를 해제합니다. 공유 데이터에 대한 동시 접근을 보호하는 데 사용합니다.
2sync.Mutex에서 Lock 후에 Unlock 호출을 잊으면 어떻게 됩니까?
2
sync.Mutex에서 Lock 후에 Unlock 호출을 잊으면 어떻게 됩니까?
답변
Unlock을 잊으면 다른 고루틴이 mutex를 획득하기 위해 무한정 대기하므로 잠재적인 데드락이 발생합니다. 모범 사례는 defer를 사용하여 panic이 발생하더라도 Unlock이 호출되도록 보장하는 것입니다. 잠금 누수를 방지하기 위해 항상 Lock과 Unlock을 동일한 스코프에서 짝지으십시오.
3sync.Mutex와 sync.RWMutex의 주요 차이점은 무엇입니까?
3
sync.Mutex와 sync.RWMutex의 주요 차이점은 무엇입니까?
답변
sync.RWMutex는 RLock을 통해 여러 동시 읽기를 허용하지만 Lock을 통한 쓰기는 하나만 독점적으로 가능합니다. 읽기 작업끼리는 서로 블록하지 않으므로 읽기가 많은 시나리오에서 성능이 향상됩니다. 읽기가 잦고 쓰기가 드물 때 RWMutex를 사용하십시오.
4
sync.Mutex의 Unlock에 defer를 사용하는 이유는 무엇입니까?
5
언제 sync.Mutex보다 sync.RWMutex를 선호해야 합니까?
+19 면접 질문
기타 Go 면접 주제
Go 기초
Junior
25개 질문Go 데이터 구조
Junior
20개 질문Go 인터페이스
Junior
18개 질문에러 처리
Junior
20개 질문Goroutine 기초
Junior
20개 질문Channels
Junior
22개 질문Go Modules
Mid-Level
18개 질문HTTP 서버
Mid-Level
24개 질문HTTP 클라이언트
Mid-Level
18개 질문JSON 인코딩
Mid-Level
20개 질문Database/SQL
Mid-Level
22개 질문context 패키지
Mid-Level
20개 질문Testing
Mid-Level
22개 질문동시성 패턴
Mid-Level
24개 질문Go 웹 프레임워크
Mid-Level
20개 질문REST API 설계
Mid-Level
20개 질문gRPC
Mid-Level
22개 질문Reflection
Senior
20개 질문메모리 관리
Senior
24개 질문성능 최적화
Senior
22개 질문Generics
Senior
20개 질문Go Design Patterns
Senior
24개 질문Microservices
Senior
24개 질문보안 및 인증
Senior
24개 질문Docker & Containerization
Senior
20개 질문Kubernetes Basics
Senior
22개 질문고급 Go
Senior
20개 질문CLI 개발
Senior
20개 질문