Daily iOS
동시성

공유 캐시의 data race

여러 이미지 요청이 같은 메모리 캐시 딕셔너리를 동시에 읽고 씁니다. 가끔 크래시가 나고, 로그를 보면 같은 URL을 두 번 내려받은 흔적도 있습니다. Lock 대신 actor로 고친다면 어떤 상태를 actor 안에 두겠습니까?

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

완성된 이미지 딕셔너리와 지금 내려받는 중인 요청 목록, 이 두 가변 상태를 actor 안에 두고 밖에서는 await로만 접근하게 하면 딕셔너리를 동시에 쓰는 데이터 레이스가 컴파일 단계에서 사라진다.

받은 질문 공유