Avoiding data races concurrent program의 가장 어렵고 기본적인 문제. 데이터 경합(data race)? 두개 이상의 쓰레드(thread)가 동시에 같은 데이터에 접근하고, 이 중 한 쓰레드라도 쓰기(write)작업을 하는 경우에 발생하는 데이터 정합성 문제. 발생하는 경우가 드물다. -> 디버깅도 어렵다. Counter example class Counter { var value = 0 func increment() -> Int { value = value + 1 return value } } let counter = Counter() asyncDetached { print(counter.increment()) } asyncDetached { print(counter.inc..