Go

동기화 프리미티브

sync.Mutex, RWMutex, Once, Pool, Map, Cond, 원자적 연산

22 면접 질문·
Mid-Level
1

Go에서 sync.Mutex란 무엇입니까?

답변

sync.Mutex(상호 배제 잠금)는 한 번에 하나의 고루틴만 임계 영역에 접근할 수 있도록 보장하는 동기화 프리미티브입니다. Lock을 호출하면 mutex를 사용할 수 있을 때까지 블록되고, Unlock은 다른 고루틴을 위해 이를 해제합니다. 공유 데이터에 대한 동시 접근을 보호하는 데 사용합니다.

2

sync.Mutex에서 Lock 후에 Unlock 호출을 잊으면 어떻게 됩니까?

답변

Unlock을 잊으면 다른 고루틴이 mutex를 획득하기 위해 무한정 대기하므로 잠재적인 데드락이 발생합니다. 모범 사례는 defer를 사용하여 panic이 발생하더라도 Unlock이 호출되도록 보장하는 것입니다. 잠금 누수를 방지하기 위해 항상 Lock과 Unlock을 동일한 스코프에서 짝지으십시오.

3

sync.Mutex와 sync.RWMutex의 주요 차이점은 무엇입니까?

답변

sync.RWMutex는 RLock을 통해 여러 동시 읽기를 허용하지만 Lock을 통한 쓰기는 하나만 독점적으로 가능합니다. 읽기 작업끼리는 서로 블록하지 않으므로 읽기가 많은 시나리오에서 성능이 향상됩니다. 읽기가 잦고 쓰기가 드물 때 RWMutex를 사용하십시오.

4

sync.Mutex의 Unlock에 defer를 사용하는 이유는 무엇입니까?

5

언제 sync.Mutex보다 sync.RWMutex를 선호해야 합니까?

+19 면접 질문

다음 면접을 위해 Go을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기