[Go] ๊ณ ๋ฃจํ‹ด(Goroutine)
ยท
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/Go
๋“ค์–ด๊ฐ€๋ฉฐ๊ณ ๋ฃจํ‹ด์€ Go์˜ ๋น„๋™๊ธฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. Go์˜ ์ตœ๋Œ€ ๋งค๋ ฅํฌ์ธํŠธ๋ผ๊ณ  ๋ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ˆ์ฃ . ๊ณ ๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ„๋‹จํ•ด์ง‘๋‹ˆ๋‹ค. Go๋Š” ๋น„๋™๊ธฐ ์ธก๋ฉด์—์„œ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ CSP(Communicating Sequential Processes)๋ผ๋Š” ํ•™์ˆ ์  ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณ ๋ฃจํ‹ด๊ณผ ์ฑ„๋„๋ฐฉ์‹์ด ํƒ„์ƒํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ณ ๋ฃจํ‹ด์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ ๋‹จ์œ„๊ฐ€ ๊ฒฝ๋Ÿ‰(2KB)์ด๊ธฐ ๋•Œ๋ฌธ์— 10๋งŒ๊ฐœ์˜ task๋„ ๊ณ ๋ฃจํ‹ด์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์ธ OS ์Šค๋ ˆ๋“œ๋Š” 1MB ์šฉ๋Ÿ‰). ๊ณ ๋ฃจํ‹ด ์Šค์ผ€์ค„๋ŸฌGo์˜ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์œ ์ € ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋Ÿฌ(user-space scheduler) ์ž…๋‹ˆ๋‹ค. ์ฆ‰, OS๊ฐ€ ์•„๋‹Œ Go ๋Ÿฐํƒ€์ž„์ด ์ง์ ‘ goroutine์„ OS thread ์œ„์—์„œ ์Šค์ผ€์ค„..