Daily iOS
동시성

레이스 컨디션

여러 스레드에서 호출되는 아래 코드는 count가 기대보다 작게 나옵니다. 왜 그런지 CPU 수준에서 설명해 주세요.

final class Stats {
    var count = 0
    func hit() { count += 1 }
}
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

count += 1은 읽기-증가-쓰기 세 단계라 두 스레드가 겹치면 한쪽 증가가 사라진다. 동기화 없는 동시 쓰기는 Swift에서 정의되지 않은 동작인 데이터 레이스다.

받은 질문 공유