
์ฃผ๋์ด ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน ๊ฐ๋ ์ก๊ธฐ
์ฃผ๋์ด ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน ๊ฐ๋ ์ก๊ธฐ ๊ด๋ จ
ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ์ ํ์ ์์์ ๋๋ค. ํนํ, ๋ค์ํ ์ฌ์ฉ์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํด์ผ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์๋ฒ ํ๊ฒฝ์์๋ ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน ๋ชจ๋ธ์ ์ ๋๋ก ์ดํดํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ฐ์. ์ด๋ฒ ๊ธ์์๋ ๋๊ธฐ์ ๋น๋๊ธฐ, ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน์ ๊ฐ๋ ์ ์์๋ฅผ ํตํด ์ฝ๊ฒ ์๊ฐํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋๊ธฐ์ ๋น๋๊ธฐ
'๋๊ธฐ์ ๋น๋๊ธฐ'๋ผ๋ ๊ฐ๋ ์ ํ๋ก๊ทธ๋๋ฐ ๋ถ์ผ ์ธ์ ํต์ ๋ถ์ผ ๋ฑ์์๋ ๋งค์ฐ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋๊ธฐ ๋๋ ๋น๋๊ธฐ๋ฅผ ์ด์ผ๊ธฐํ ๋, ํญ์ ๋ ๊ฐ์ง ๋์์ ์ธ๊ธํฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์์๋ ์๋ก ์ํธ ์์ฉํ๋ ๋ชจ๋ ๋ ๊ฐ ๋๋ ํจ์๋ฅผ ์๋ฏธํ๋ฉฐ, ํต์ ์์๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ ํต์ ๋น์ฌ์๋ฅผ ์๋ฏธํฉ๋๋ค.

์ฆ, ๋๊ธฐ๋ A์ B๋ผ๋ ๋ ๋์์ด ๊ฐํ๊ฒ ๊ฒฐํฉ๋ ๊ฒ์ ์๋ฏธํฉ๋๋คโ.
์๋ฅผ ๋ค์ด, ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์์ A๊ฐ ์์ B์ ์์กดํ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ์ฃ . ์ด๋ฌํ ์์กด ๊ด๊ณ๊ฐ ์กด์ฌํ ๋, A์ B๋ ๋๊ธฐ์ ๋๋ค.

๋ฐ๋ฉด A์ B๊ฐ ๊ฐํ ๊ฒฐํฉ๊ณผ ๊ฐ์ ์ ์ฝ์ด ์์ด ๊ฐ์ ์์ ์ ์์ ์ ์คํํ ์ ์์ ๋, ์ด๋ฅผํ ๋ฉด ์๋ ๊ทธ๋ฆผ์ A์ B๋ ๋น๋๊ธฐ์ ๋๋ค.

์ด์ฒ๋ผ ๋๊ธฐ์ ๋น๋๊ธฐ๋ฅผ ์ธ๊ธํ ๋์๋ ๋ฐ๋์ ์์ชฝ ๋ชจ๋๋ฅผ ์๋ฏธํ๋ฉฐ, ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์์ญ์ ๊ตญํ๋์ง ์์ต๋๋ค. ์์ฌ๊ฐ ์ง์์ ์์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ, ์์ชฝ ๋น์ฌ์๊ฐ ์ ํ๋ฅผ ๊ฑธ๊ฑฐ๋ ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ๊ฒ ๋ฑ์ด ๋ชจ๋ ์ ํ์ ์ธ ๋๊ธฐ, ๋น๋๊ธฐ ์๋๋ฆฌ์ค์ ํด๋นํฉ๋๋ค.
๊ทธ๋ผ ๋๊ธฐ์ ๋น๋๊ธฐ์ ๋ํ ์ดํด๋ฅผ ๋๊ณ ๋ณธ๊ฒฉ์ ์ผ๋ก ;๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน'์ด ๋ฌด์์ธ์ง ์์๋ณผ๊ฒ์.
๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน
๋ธ๋กํน(blocking)๊ณผ ๋ ผ๋ธ๋กํน(non-blocking)์ ํ๋ก๊ทธ๋๋ฐ์์ ํจ์๋ฅผ ํธ์ถํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ง์ฝ, ํจ์ A์ B๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ํจ์ A๊ฐ ํจ์ B๋ฅผ ํธ์ถํ ๋, ํจ์ B๋ฅผ ํธ์ถํจ๊ณผ ๋์์ ์ด์ ์ฒด์ ๊ฐ ํจ์ A๊ฐ ์คํ ์ค์ธ ์ค๋ ๋๋ ํ๋ก์ธ์ค๋ฅผ ์ผ์ ์ค์ง์ํจ๋ค๋ฉด ํจ์ B์ ๋ํ ํธ์ถ ๋ฐฉ์์ ๋ธ๋กํน ๋ฐฉ์์ด๋ฉฐ, ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ ผ๋ธ๋กํน ๋ฐฉ์์ ๋๋ค.
์๋ ์ด๋ฏธ์ง๋ ํจ์ ํธ์ถ๋ก ์ค๋ ๋๊ฐ ์ผ์ ์ค์ง๋๋ ๊ฒฝ์ฐ์ ๋๋ค.

์ด์ ๊ฐ์ด ๋ธ๋กํน ํธ์ถ์ ํต์ฌ์ ์ค๋ ๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ์ผ์ ์ค์ง๋๋ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก ๋ค์ ์ฝ๋์์ ๋ณผ ์ ์๋ฏ์ด, ๋ชจ๋ ํจ์ ํธ์ถ์ด ํธ์ถ์์ ์ค๋ ๋๋ฅผ ์ผ์ ์ค์ง์ํค๋ ๊ฒ์ ์๋๋๋ค.

์๋ฅผ ๋ค์ด, func
ํจ์๊ฐ ์คํ ์ค์ธ ์ค๋ ๋๋ sum
ํจ์๊ฐ ํธ์ถ๋๋๋ผ๋ ์ด์ ์ฒด์ ๊ฐ ์ด๋ฅผ ์ผ์ ์ค์ง์ํค์ง ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํจ์ ํธ์ถ๋ก ์ธํด ํธ์ถ์์ ์ค๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ์ด์ ์ฒด์ ์ ์ํด ์ผ์ ์ค์ง๋ ์ ์๋ ๊ฒ์ ์ด๋ค ๊ฒฝ์ฐ์ผ๊น์?
๋ธ๋กํน์ ํต์ฌ ๋ฌธ์ : ์ ์ถ๋ ฅ
์ผ๋ฐ์ ์ผ๋ก ๋ธ๋กํน์ ๋๋ถ๋ถ ์ ์ถ๋ ฅ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
๊ทธ ์ด์ ๋ ๋งค์ฐ ๊ฐ๋จํ๋ฐ์. ๋์คํฌ๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋์คํฌ๊ฐ ํ๋์ ํธ๋ ํ์ ์ ์ถ๋ ฅ ์์ฒญ์ ์๋ฃํ๋ ๋ฐ ์์๋๋ ์๊ฐ์ ms ๋จ์ ์์ค์ ๋๋ค. ๋ฐ๋ฉด์ CP์ ํด๋ญ ์ฃผํ์(clock rate)๋ ์ด๋ฏธ GHz ๋จ์ ์์ค์ ๋๋ฌํด ์๊ธฐ ๋๋ฌธ์, ๋์คํฌ๊ฐ ํ๋์ ์์ ์ ์ํํ ์ ์๋ ms ๋จ์ ์๊ฐ์ด CPU์ ์ฃผ์ด์ง๋ฉด ๋๋์ ๊ธฐ๊ณ ๋ช ๋ น์ด ์คํ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ผ๋จ ํ๋ก๊ทธ๋จ์ด๋ ์ค๋ ๋, ๋๋ ํ๋ก์ธ์ค๊ฐ ์ด๋ฐ ์ ์ถ๋ ฅ ์์ ์ ํ ๋๋ ์ฐ๋ฆฌ ์ค๋ ๋์์ ์ ์ถ๋ ฅ ๊ณผ์ ์ด ์คํ๋๋ ๋์ CPU ์ ์ด๊ถ์ ๋ค๋ฅธ ์ค๋ ๋์ ๋๊ฒจ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ดํ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋๋ฉด ๋ค์ CPU ์ ์ด๊ถ์ ์ฐ๋ฆฌ ์ค๋ ๋ ๋๋ ํ๋ก์ธ์ค์์ ๋๊ฒจ๋ฐ์ ๊ณ์ ๋ค์ ์์ ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค.
์ด๋๋ ์๋ ๊ทธ๋ฆผ์ฒ๋ผ CPU ์ ์ด๊ถ์ ์์คํ๋ค๊ฐ ๋์ฐพ๋ ์๊ฐ ๋์ ์ค๋ ๋๋ ํ๋ก์ธ์ค๋ ๋ธ๋กํน๋์ด ์ผ์ ์ค์ง๋ฉ๋๋ค.

๊ทธ๋ฆผ์ฒ๋ผ ์ค๋ ๋ A๋ ์ ์ถ๋ ฅ ์์ ์ ์คํํ๋ค ๋ธ๋กํน๋์ด ์ผ์ ์ค์ง ๋๋ฉฐ CPU๋ ์ค๋ ๋ B์ ํ ๋น๋ฉ๋๋ค. ๊ทธ๋ ๊ฒ ์ค๋ ๋ B๊ฐ ์คํ๋๋ ๋์ ์ด์ ์ฒด์ ๋ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋ ๊ฒ์ ํ์ธํ๋ฉด ๋ค์ ์ค๋ ๋ A์ CPU๋ฅผ ํ ๋นํฉ๋๋ค.
์ด์ฒ๋ผ ์ด์ ์ฒด์ ๋ CPU์ ๋ฆฌ์์ค๋ฅผ ์ต๋ํ ํ์ฉํ ์ ์๋๋ก ๊ฐ ์ค๋ ๋ ๊ฐ์ CPU ์ฌ์ฉ ์๊ฐ์ ํจ์จ์ ์ผ๋ก ํ ๋นํด์ผ ํ๋๋ฐ, ์ด๊ฒ์ด ๋ฐ๋ก ๋ธ๋กํน ์ ์ถ๋ ฅ ๋ฐฉ์์ด ํ์ํ ํต์ฌ์ ์ธ ์ด์ ์ ๋๋ค.
๋ค๋ง ๊ทธ ๊ฒฐ๊ณผ, ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์ ์ถ๋ ฅ ์์ ์ด ํฌํจ๋ ๋ ๊ฐ๋ ํธ์ถ ์ค๋ ๋๊ฐ ๋ธ๋กํน๋๋ฉฐ ์ผ์ ์ค์ง๋๋ ์ผ์ด ๋ฐ์ํฉ๋๋ค. ์ ์ถ๋ ฅ ์์ ์ด ๋๋ฌด ๋๋ ค ๊ด๋ จ ํจ์๋ฅผ ์ง์ ํธ์ถํ๋ฉด ์ค๋ ๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ๋ธ๋กํน๋๋ ์ผ์ด ์๊ธฐ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํธ์ถ ์ค๋ ๋๊ฐ ์ผ์ ์ค์ง๋์ง ์์ผ๋ฉด์ ์ ์ถ๋ ฅ ์์ ์ ์์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๊น์?
๋น์ฐํ ์์ต๋๋ค. ๋ฐ๋ก **'๋ ผ๋ธ๋กํน ํธ์ถ'**์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๋ ผ๋ธ๋กํน๊ณผ ๋น๋๊ธฐ ์ ์ถ๋ ฅ
๋คํธ์ํฌ ๋ฐ์ดํฐ ์์ ์ ์๋ก ๋ค์ด ๋ ผ๋ธ๋กํน ํธ์ถ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ํจ์์ธ recv
๊ฐ ๋
ผ๋ธ๋กํน์ด๋ฉด ์ด ํจ์๋ฅผ ํธ์ถํ ๋ ์ด์ ์ฒด์ ๋ ์ค๋ ๋๋ฅผ ์ผ์ ์ค์ง์ํค๋ ๋์ recv
ํจ์๋ฅผ ์ฆ์ ๋ฐํํฉ๋๋ค. ์ดํ ํธ์ถ ์ค๋ ๋๋ ์์ ์ ์์
์ ๊ณ์ ์งํํ๋ฉฐ, ๋ฐ์ดํฐ ์์ ์์
์ ์ปค๋์ด ์ฒ๋ฆฌํฉ๋๋ค.
์๋ ๊ทธ๋ฆผ์์ ๋ณผ ์ ์๋ฏ, ๋ ๊ฐ์ง ์์ ์ ๋ณํ ์ฒ๋ฆฌ๋ฉ๋๋ค.

์ด์ ์์ฒญ์ ์ ๋ฌ๋์์ผ๋ ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋์ง ์๋ ๋ฐฉ๋ฒ์ด ํ์ํ๊ฒ ์ฃ ? ์ด๋ฅผ ํ์ธํ ์ ์๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ๋
ผ๋ธ๋กํน ๋ฐฉ์์
recv
ํจ์ ์ธ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ํจ์๋ฅผ ํจ๊ป ์ ๊ณตํ๊ณ , ํด๋น ํจ์๋ฅผ ํธ์ถํ์ฌ ์์ ๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. - ๋ฐ์ดํฐ๊ฐ ์์ ๋๋ฉด ์ค๋ ๋์ ๋ฉ์์ง๋ ์ ํธ ๋ฑ์ ์ ์กํ๋ ์๋ฆผ ์๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
recv
ํจ์๋ฅผ ํธ์ถํ ๋, ๋ฐ์ดํฐ ์์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ํจ์๋ฅผ ์ฝ๋ฐฑ ํจ์์ ๋ด์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ ์ ์์ต๋๋ค. ์ด๋recv
ํจ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๋ ผ๋ธ๋กํน ํธ์ถ์ด๋ฉฐ, ์ด๋ฌํ ์ ํ์ ์ ์ถ๋ ฅ ์์ ์ **'๋น๋๊ธฐ ์ ์ถ๋ ฅ(asynchronous input/output)'**์ด๋ผ๊ณ ๋ ํฉ๋๋ค. ๋ค๋ง ๋ธ๋กํน ํธ์ถ ๋ฐฉ์๊ณผ ๋น๊ตํด ๋ณธ๋ค๋ฉด, ๋น๋๊ธฐ ์ ์ถ๋ ฅ ๋ฐฉ์์ ์ฝ๋ ์์ฑ์ด ๊ทธ๋ค์ง ์ง๊ด์ ์ด์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ด์.
ํผ์ ์ฃผ๋ฌธ์ '๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน' ๋น์ ํ๊ธฐ
์กฐ๊ธ ๋ ์ฝ๊ฒ, '๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน' ๊ฐ๋ ์ ํผ์ ์ฃผ๋ฌธ ์ํฉ์ ๋น๋์ด ์ฝ๊ฒ ์ค๋ช ๋๋ฆด๊ฒ์. ์ดํดํ ๊ฐ๋ ๊ณผ ๋น๊ตํด๋ณด๋ฉฐ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ ํ์คํ ์ดํดํด ๋ณด์ธ์.
**'๋ธ๋กํน ํธ์ถ'**์ ํผ์ ๊ฐ๊ฒ์ ์ง์ ๊ฐ์ ํผ์๋ฅผ ์ฃผ๋ฌธํ๋ ๊ฒ์ ๋น์ ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ ํผ์๊ฐ ์์ฑ๋ ๋๊น์ง ๊ฐ๊ฒ ์์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด์ผ ํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ด ํผ์๋ฅผ ์ฃผ๋ฌธํ๊ธฐ์ ์ด๋ฅผ ;๋ธ๋กํน'๋ ๊ฒ์ผ๋ก ๋ณผ ์ ์์ผ๋ฉฐ, ํผ์๊ฐ ์์ฑ๋์ด์ผ๋ง ๊ทธ ํผ์๋ฅผ ๋ค๊ณ ๊ฐ์ ๋ค๋ฅธ ์ผ์ ํ ์ ์์ต๋๋ค.
**'๋ ผ๋ธ๋กํน ํธ์ถ'**์ ์ ํ๋ก ํผ์๋ฅผ ์ฃผ๋ฌธํ๋ ๊ฒ์ ๋น์ ํ ์ ์์ต๋๋ค.
์ ํ๋ก ํผ์๋ฅผ ์ฃผ๋ฌธํ ํ, ํ๊ด๋ฌธ ์์์ ํ์ผ์์ด ํผ์๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋์ ์๋ฌด๋ ์์ต๋๋ค. ํผ์๊ฐ ์ค๊ธฐ ์ ๊น์ง ๋ค๋ฅธ ์ผ์ ํ ์ ์๋ ๊ฒ์ด์ฃ . ์ด๋ ๊ฒ ์ ํ ์ฃผ๋ฌธ ๋ฐฉ์์ผ๋ก ํผ์๋ฅผ ์ฃผ๋ฌธํ๋ ๊ฒ์ด ๋ฐ๋ก ๋ ผ๋ธ๋กํน ํธ์ถ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ ผ๋ธ๋กํน ํธ์ถ ์ํฉ์์๋ ํผ์๊ฐ ์์ฑ๋์๋์ง ์ด๋ป๊ฒ ์ ์ ์์๊น์? ์ฌ๋ฌ๋ถ์ ์ธ๋ด์ฌ์ ๋ฐ๋ผ ๋ ๊ฐ์ง ์ํฉ์ด ์์ ์ ์์ต๋๋ค.
๋งค์ฐ ์ธ๋ด์ฌ์ด ๊ฐํ ๊ฒฝ์ฐ
์ฌ๋ฌ๋ถ์ ํผ์๊ฐ ์ธ์ ์์ฑ๋๋์ง, ์ธ์ ๋ฐฐ๋ฌ์ด ๋์ฐฉํ๋์ง ์ ํ ๊ด์ฌ์ด ์์ต๋๋ค. ์ด์ฐ ๋์๋ ๋ฐฐ๋ฌ์ด ๋์ฐฉํ๋ฉด ์ ํ๊ฐ ์ฌ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๋ถ์ ํ ์ผ์ ํ๊ณ ์์ผ๋ฉด ๋ฉ๋๋ค. ์ฌ๊ธฐ์์ ์ฌ๋ฌ๋ถ๊ณผ ํผ์๋ฅผ ๊ตฝ๋ ์์ ์ ๋น๋๊ธฐ์ ๋๋ค.
์ธ๋ด์ฌ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ
์ฌ๋ฌ๋ถ์ 5๋ถ๋ง๋ค ์ ํ๋ฅผ ๊ฑธ์ด ํผ์๊ฐ ์์ฑ๋์๋์ง ๋ฌผ์ด๋ด ๋๋ค. ๋ฌผ๋ก 5๋ถ ๋ง๋ค ์ ํํด์ผ ํ๋ค๋ ๋ถํธํจ์ด ์์ง๋ง, ์ฌ์ ํ ์ฌ๋ฌ๋ถ์ ํ ์ผ์ ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ๋ถ๊ณผ ํผ์๋ฅผ ๊ตฝ๋ ์์ ์ ์ฌ์ ํ ๋น๋๊ธฐ์ ๋๋ค.
์ธ๋ด์ฌ ๋ถ์กฑ์ ๋์ด ์์ ์ธ๋ด์ฌ์ด ์๋ค๋ฉด ์ด๋จ๊น์?
5๋ถ๋ง๋ค ์ ํ๋ฅผ ๊ฑธ์ด ํผ์๊ฐ ์์ฑ๋์๋์ง ๋ฌป๊ณ , 5๋ถ๋ง๋ค ์ ํํ๋ ์ผ์ ์ ์ธํ๊ณ ๋ ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ค๋ฉด์? ์ด์ ์ฌ๋ฌ๋ถ๊ณผ ํผ์๋ฅผ ๊ตฝ๋ ์์ ์ ๋ ์ด์ ๋น๋๊ธฐ๊ฐ ์๋ ๋๊ธฐ๊ฐ ๋์ด ๋ฒ๋ฆฝ๋๋ค. ํ๋จ์ ๊ทธ๋ฆผ์์ ๋ณผ ์ ์๋ฏ์ด, ๋ ผ๋ธ๋กํน์ด ๋ฐ๋์ ๋น๋๊ธฐ๋ฅผ ์๋ฏธํ์ง ์์ต๋๋ค.

๋๊ธฐ์ ๋ธ๋กํน
๋๊ธฐ๋ ๋ธ๋กํน๊ณผ ๋ค์ ์ ์ฌํฉ๋๋ค. ํ๋ก๊ทธ๋๋ฐ ๊ด์ ์์ ๋ณด๋ฉด, ๋๊ธฐ ํธ์ถ์ ๋ฐ๋์ ๋ธ๋กํน์ด ์๋ ๋ฐ๋ฉด์ ๋ธ๋กํน ํธ์ถ์ ๋ชจ๋ ํ์คํ ๋๊ธฐ ํธ์ถ์ ๋๋ค. ๊ฐ์ฐ ํจ์์ ํธ์ถ์ ์๋ก ๋ค์ด ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.

์ฌ๊ธฐ์์ sum
ํจ์์ ๋ํ ํธ์ถ์ ๋๊ธฐ์ด์ง๋ง, funcA
ํจ์๊ฐ sum
ํจ์๋ฅผ ํธ์ถํ๋ค๊ณ ํด์ ๋ธ๋กํน๋๊ฑฐ๋ ์ค๋ ๋๊ฐ ์ผ์ ์ค์ง๋์ง๋ ์์ต๋๋ค. ๋ฐ๋ฉด์ ์ด๋ค ํจ์๊ฐ ๋ธ๋กํน ๋ฐฉ์์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ, ์ด๋ ๋ฐ๋์ ๋๊ธฐ ํธ์ถ์
๋๋ค.
๋น๋๊ธฐ์ ๋ ผ๋ธ๋กํน
์ด๋ฒ์๋ ๋คํธ์ํฌ ๋ฐ์ดํฐ ์์ ์ ์๋ก ๋ค์ด '๋น๋๊ธฐ์ ๋
ผ๋ธ๋กํน'์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋**recv
ํจ์๋ฅผ ๋
ผ๋ธ๋กํน ํธ์ถ๋ก ์ค์ ํ๊ธฐ ์ํด NON_BLOCKING_FLAG
์ค์ ๊ฐ(flag)์ ์ถ๊ฐ**ํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์์ต๋๋ค.


์ด์ recv
ํจ์๋ ๋
ผ๋ธ๋กํน ํธ์ถ์ด๋ฏ๋ก, ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด ์ฃผ๋ handler
ํจ์๋ฅผ recv
ํจ์์ ์ฝ๋ฐฑ์ผ๋ก ์ ๋ฌํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ์ฝ๋๋ ๋น๋๊ธฐ์ด์ ๋
ผ๋ธ๋กํน์
๋๋ค.
๊ทธ๋ฌ๋ ์์คํ
์ด ๋คํธ์ํฌ ๋ฐ์ดํฐ์ ๋์ฐฉ์ ๊ฐ์งํ๋ ์ ์ฉ ํจ์์ธ check
ํจ์๋ฅผ ์ ๊ณตํ๋ค๋ฉด, ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ ์ ์์ฃ .

์ฌ๊ธฐ์๋ recv
ํจ์๋ ๋
ผ๋ธ๋กํน์ผ๋ก ํธ์ถ๋์ง๋ง, while
๋ฐ๋ณต๋ฌธ์์ ๋์์์ด ๊ฐ์ง๋ฅผ ์๋ํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๊ธฐ ์ ๊น์ง๋ handler
ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ๋ฐ๋ผ์ recv
ํจ์๋ ๋น๋ก ๋
ผ๋ธ๋กํน์ด์ง๋ง, ์ ์ฒด์ ์ธ ๊ด์ ์์ ๋ณด๋ฉด ์ด ์ฝ๋๋ ๋๊ธฐ์
๋๋ค. ์ด๋ ๋ง์น ์ ํ๋ก ํผ์๋ฅผ ์ฃผ๋ฌธํ์์๋ ๊ณ์ ์ ํ๋ก ๋์์์ด ํ์ธํ๋ ์ํฉ๊ณผ ๋์ผํ๋ฉฐ, ์ด ์ํฉ์ ๋๊ธฐ์ด์ ๋
ผ๋ธ๋กํน์ ํด๋นํฉ๋๋ค.
๋ฌผ๋ก ์์ ์ฝ๋๋ ๋ฐ๋ณต๋ฌธ์์ CPU ๋ฆฌ์์ค๊ฐ ์ธ๋ฐ์์ด ์๋ชจ๋์ด ๋งค์ฐ ๋นํจ์จ์ ์ด๋ฏ๋ก ์ด๋ฐ ์ฝ๋๋ ์์ฑํด์๋ ์ ๋ฉ๋๋ค. ์ด์ ๊ฐ์ด ๋ ผ๋ธ๋กํน์ด๋๋ผ๋ ์ ์ฒด์ ์ผ๋ก ๋ฐ๋์ ๋น๋๊ธฐ๋ผ๋ ์๋ฏธ๋ ์๋๋ฉฐ, ์ด๋ ์ฝ๋ ๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์ฌ๊ธฐ๊น์ง, ์ฐ๋ฆฌ๊ฐ ์์๋ณธ ๋ชจ๋ ๊ฐ๋ ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ๋งค์ฐ ์ค์ํ ๊ฐ๋ ์ธ ๋งํผ, ์ถฉ๋ถํ ์ดํดํ๊ณ ์ค๋ฌด์ ์ ์ฉํด ๋ณธ๋ค๋ฉด ์ ๋ฌด ํจ์จ ์์น์ ๊ธฐ๋ํด ๋ณด์ค ์ ์์ ๊ฑฐ์์.

Note
์ด ๊ธ์ ๊ธธ๋ฒ์์ ์ถ๊ฐ๋ ์ฑ
<์ปดํจํฐ ๋ฐ๋ฐ๋ฅ์ ๋น๋ฐ>์์ ๋ฐ์ทยทํธ์งํ ๊ธ์
๋๋ค. ์๋ฌธ์ [์ฌ๊ธฐ (gilbutzigy
)]์์ ๋ณผ ์ ์์ต๋๋ค.