Search
💣

data race

2개 이상의 개별 쓰레드가 동시에 동일한 데이터에 접근하고, 이러한 접근 중 하나 이상이 write일 때 발생
1.
디버깅하기 굉장히 어려움
2.
OS의 스케쥴러가 프로그램을 실행할 때마다 다른 방식으로 concurrent tasks를 인터리빙할 수 있기 때문에 비결정적

data race 피하기

발생하는 원인 - 데이터가 shared mutable state이기 때문에 - 데이터가 변경되지 않거나, 공유되지 않는 경우엔 data race가 발생할 수 없음 피하려면 - value semantic을 사용하여 shared mutable state를 제거 - value semantic인 "let" : immutable하기 때문에 안전