[Go] race detector
race detector๋ ๋์์ฑ ๋ฌธ์ ๋ฅผ ํ์งํ๊ธฐ ์ํ ๋ด์ฅ ๋ณด์กฐ๋๊ตฌ๋ค.
go๋ ๋ง๋ง ๋์์ฑ ์ธ์ด์ง, ์ํํ ํํ์ ๋์์ฑ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ด์ฉ ์ ์์ด ์จ์ผํ๋ค.
์ด๊ฑด static checker๊ฐ ์๋๋ผ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ๋ด์ฅ๋ผ์ ๋ฐํ์์ ๊ฒ์ฌ๋ฅผ ํ๋ค.
์ํํ ๋์์ฑ ์ ๊ทผ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๊ทธ๊ฑธ ๋ก๊ทธ๋ก ์ฐ๋ ์ ๋์ ์ญํ ๋ง ํ๋ค.
์ฌ์ฉ๋ฒ
ํ๋ซํผ์ ๋ฐ๋ผ CGO ์ข ์์ฑ์ด ์กด์ฌํ๋ค. ์ผ์ค์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋น๋ํ ๋ -race ์ต์
์ ๋ฃ์ผ๋ฉด ์ผ์ง๋ค.
๊ทธ๋ฌ๋ฉด ๋ญ๊ฐ ๊ผฌ๋กฌํ ์ฝ๋์ ํ๋ก๊ทธ๋จ์ด ์ ๊ทผํ ๋๋ง๋ค
์ด๋ฐ ์์ผ๋ก ์คํํธ๋ ์ด์ค๋ฅผ ์ฐ์ด์ค๋ค.
panic์ด ๋ ๋งํ ์ํํ ์ฝ๋๋ง ์ก๋๊ฑด ์๋๊ณ , slice๋ ์ค์นผ๋ผ ๋ณ์์ ์ ๊ทผํ๋ ๊ฒ๋ค๋ ์๋์ ๋์ด๋ค.
๊ทผ๋ฐ ์ด๊ฑฐ ๋๋ฆฌ๋ค๋ณด๋ฉด ๋ด ์ฝ๋๋ณด๋ค ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์์ ์๋์ด ๋ฐ ๋๊ฐ ๋ ๋ง๋๋ผ.
Go ์์ฝ์์คํ
์ด ๊ธ๋ฌ๋จน์ ๊ฒ์ธ๊ฐ? ์ด ๋๊ตฌ๊ฐ ๋ฌธ์ ์ธ ๊ฒ์ธ๊ฐ?
๋ถ์์ฉ
์ฑ๋ฅ ๋ถํ๊ฐ ๋์ฐํ๊ฒ ์ฌํ๊ธฐ ๋๋ฌธ์ ํ๋ก๋์ ์์คํ ์ ์ฌ๋๋ค๋ฉด ๊ณ ๋ฏผ์ ์ข ํด๋ด์ผ ํ๋ค. ๋ด ๊ฒฝ์ฐ์๋ ํ๋ก๋์ ์์๋ ์ ์๋ฏธํ ๋ฌธ์ ์ฌํ์ด ๊ฐ๋ฅํด์ ํ๋ก๋์ ์ ์ฌ๋ฆฌ๊ณ ์คํ๋ ํจ๊ป ์ข ์ฌ๋ ธ๋ค.
CPU, Memory๋ฅผ ๋ชจ๋ ์์ฒญ๋๊ฒ ์ก์๋จน๊ณ , CPU๋ 2๋ฐฐ๋ 2๋ฐฐ ์ด์, ๋ฉ๋ชจ๋ฆฌ๋ 2-20๋ฐฐ๊น์ง ์ ์ ํ ์ ์๋ค.

๊ฒ๋ค๊ฐ ์ค๋ซ๋์ ์คํ๋๋ ๊ณ ๋ฃจํด์ด ์์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ append-only๋ก ๋์๋๋ฏ ์์ด๋ ๋ฌธ์ ๊ฐ ์๋ค.
๊ทผ๋ฐ ์ด๊ฑธ๋ก ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ์ฐพ์ง๋ ๋ชปํ๋ค.
์ฌ์ค ๊ฐํ์ ์ผ๋ก ๋ฐ์ํ๋ concurrent map write ํจ๋ ์ก์ผ๋ ค๊ณ ๋ฃ์ด๋ณธ๊ฑด๋ฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ง ๋ฌด์๋ฏธํ ๊ฒฝ๊ณ ๋ง ์๋ฉ ๋จ๊ณ ์ง์ง ๋ฌธ์ ๊ฐ ๋ ๋งํ ๊ทผ์์ง๋ ์ ํ ์ฐพ์ง ๋ชปํ๋ค.