NOTE 만약 동시성(cuncurrent) 코드나, 멀티쓰레드 코드를 작성한적이 있다면 이 메모리 접근 충돌 문제는 익숙한 문제일 것 입니다. 하지만 이 접근 충돌 문제는 싱글 쓰레드에서 발생할 수 있는 문제이고 동시성과 멀티쓰레드와 관련이 없습니다.
balance(&playerOneScore, &playerOneScore)
와 같이 인자를 넣으면 읽기와 쓰기를 동시에 하게 돼서 접근 충돌이 발생합니다.NOTE 연산자도 함수이기 때문에 in-out파라미터 장기 접근 문제가 발생할 수 있습니다.
shareHealth
함수를 익스텐션에서 선언합니다. Player타입의 teammate는 inout파라미터로 지정하고 동작은 현재 Player와 입력한 teammate Player간에 balance함수를 실행합니다. 여기서 사용하는 인자는 in-out 파라미터입니다.