[Go] ๊ณ ๋ฃจํด(Goroutine)
ยท
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด/Go
๋ค์ด๊ฐ๋ฉฐ๊ณ ๋ฃจํด์ Go์ ๋น๋๊ธฐ ๋ฉ์ปค๋์ฆ์
๋๋ค. Go์ ์ต๋ ๋งค๋ ฅํฌ์ธํธ๋ผ๊ณ ๋ด๋ ๊ณผ์ธ์ด ์๋์ฃ . ๊ณ ๋ฃจํด์ ์ฌ์ฉํ๋ฉด ์ด๋ฒคํธ ์ฒ๋ฆฌ, ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋จํด์ง๋๋ค. Go๋ ๋น๋๊ธฐ ์ธก๋ฉด์์ ๋ค๋ฅธ ์ธ์ด์ ๋ค๋ฅด๊ฒ CSP(Communicating Sequential Processes)๋ผ๋ ํ์ ์ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ๊ณ ๋ฃจํด๊ณผ ์ฑ๋๋ฐฉ์์ด ํ์ํ๊ฒ ๋์ต๋๋ค. ๋ํ ๊ณ ๋ฃจํด์ผ๋ก ์คํํ๋ ์ค๋ ๋ ๋จ์๊ฐ ๊ฒฝ๋(2KB)์ด๊ธฐ ๋๋ฌธ์ 10๋ง๊ฐ์ task๋ ๊ณ ๋ฃจํด์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค(์ผ๋ฐ์ ์ธ OS ์ค๋ ๋๋ 1MB ์ฉ๋). ๊ณ ๋ฃจํด ์ค์ผ์ค๋ฌGo์ ์ค์ผ์ค๋ฌ๋ ์ ์ ๋ ๋ฒจ ์ค๋ ๋ ์ค์ผ์ค๋ฌ(user-space scheduler) ์
๋๋ค. ์ฆ, OS๊ฐ ์๋ Go ๋ฐํ์์ด ์ง์ goroutine์ OS thread ์์์ ์ค์ผ์ค..