[번역] Swift Concurrency / Data Race Safety (Migrating to Swift 6)

전통적으로, 변경 가능한 상태(Mutable State)는 런타임에서 세심한 동기화(Synchronization)을 통해 수동으로 보호해야 했습니다. 락(Lock)과 큐(Queue) 같은 도구를 사용하여 데이터 경합을 방지하는 일은 전적으로 개발자의 몫이었습니다. 이는 처음부터 올바르게 구현하기도 어렵지만, 시간이 지나면서 계속 올바르게 작동하도록 유지하는 것은 더더욱 어렵습니다. 동기화가 필요한지 여부를 판단하는 것조차 매우 어려울 수 있습니다. 최악의 경우, 스레드에 안전하지 않은 코드는 런타임에서 예기치 못한 동작이 일어난다고 보장되지 않습니다. 이런 코드는 겉보기에는 잘 동작하는 것처럼 보일 수 있으며, 이는 데이터 경합 특유의 잘못되고 예측 불가능한 동작이 드러나려면 매우 이례적인 조건이 필요하기 때문입니다. ...

October 25, 2025 · 13 min · 2684 words · Me