[Go] race detector

go๋Š” ๋™์‹œ์„ฑ์— ํŠนํ™”๋˜์–ด์žˆ๋‹ค๊ณ ๋Š” ํ•˜์ง€๋งŒ, ์•ˆ์ „ํ•œ ๋™์‹œ์„ฑ์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š” ์–ธ์–ด๋‹ค.
๊ทธ๋Ÿฐ๊ฑธ ์›ํ•œ๋‹ค๋ฉด rust๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.

๊ทธ๋ž˜๋„ ์–ด๋А์ •๋„ race condition ๊ฐ™์€ ์ƒํ™ฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ณด์กฐ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๊ธด ํ•œ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” data race๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ ์ฝ”๋“œ๋‹ค.

๊ณต์œ  ๋ณ€์ˆ˜๋ฅผ ๋‘๊ฐœ์˜ ๊ณ ๋ฃจํ‹ด์ด ๋Œ๋ฉด์„œ ๋™์‹œ ๋ณ€๊ฒฝ์„ ์‹œ๋„ํ•˜๋Š”๋ฐ


๋†’์€ ํ™•๋ฅ ๋กœ ์—ฐ์‚ฐ์ด ๊ฒน์ณ์„œ race๊ฐ€ ๋ฐœ์ƒํ•˜๊ณค ํ•œ๋‹ค.
์ด๋Ÿฐ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•œ ๊ฒฝ์šฐ์—๋Š” ์ฐพ๊ธฐ ์‰ฝ์ง€๋งŒ, ์ฝ”๋“œ ๊ตฌ์„ฑ์ด ๋ณต์žกํ•ด์ง€๊ณ  ๋ ˆ์ด์–ด๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก ์ฐพ๊ธฐ ํž˜๋“ค์–ด์ง„๋‹ค.

๊ทธ๋ž˜๋„ go๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ•ด์ฃผ๊ธด ํ•œ๋‹ค.
run์ด๋‚˜ test๋ฅผ ๋Œ๋ฆด๋•Œ -race ์˜ต์…˜์„ ์ฃผ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋˜๋Š”...๋ฐ..

์ด๊ฒŒ ๋˜ cgo๋ž‘ ์—ฎ์—ฌ์„œ ์ข…์†์„ฑ์ด ํ† ๋‚˜์˜ค๊ฒŒ ๋˜์–ด์žˆ๋‹ค.
windows์ฒ˜๋Ÿผ cgo์™€ c ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์“ฐ๊ธฐ ํž˜๋“  ๊ตฌ์„ฑ์ด๋ผ๋ฉด ๋งค์šฐ ๊ท€์ฐฎ์€ ์„ธํŒ…์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์•„๋ฌดํŠผ ์ •์ƒ์ ์ธ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ• ๋•Œ๋Š”

์ด๋Ÿฐ์‹์œผ๋กœ data race๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์„๋งŒํ•œ ์ฝ”๋“œํฌ์ธํŠธ๋ฅผ ์ฐ์–ด์ค€๋‹ค.
์ด๊ฑฐ ๋ณด๊ณ  ์ถ”์ ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ์žก์œผ๋ฉด ๋œ๋‹ค.

๊ทผ๋ฐ ์ด๊ฒŒ ํ™•์‹คํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ "์˜์‹ฌ๋˜๋Š”"๊ฑธ ์ฐพ๋Š” ๊ฑฐ๋ผ์„œ, ์‹ค์ œ๋กœ๋Š” ์•ˆ์ „ํ•œ ์ฝ”๋“œ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.



์ฐธ์กฐ
https://go.dev/doc/articles/race_detector