Daily iOS
동시성

딕셔너리 캐시의 스레드 안전

메시지 목록 화면에서 셀마다 프로필 이미지를 비동기로 내려받아 [String: UIImage] 딕셔너리에 캐시합니다. 여러 스레드가 동시에 읽고 쓰면서 가끔 크래시가 납니다. 왜 크래시가 나나요?

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

Swift Dictionary는 스레드 안전하지 않다. 쓰기 중 재해싱·COW 버퍼 교체가 일어나는 동안 다른 스레드가 읽으면 해제됐거나 반쯤 옮겨진 버퍼를 건드려 잘못된 메모리 접근으로 크래시한다.

받은 질문 공유