1. Blocking/Non-Blocking, Synchronous/Asynchronous
Last updated
Last updated
๋ชฉ์ฐจ
๋๊ธฐ์ ๋น๋๊ธฐ, ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน์ ์ฐจ์ด๋ฅผ I/O์ ํจ๊ป ์์๋ณด์. ์ ์ ํ๋ก์ธ์ค๊ฐ I/O๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ๊ฐ ์ดํดํ๊ธฐ ์ฌ์์ ์์๋ก ์ฌ์ฉํ์๋ค.
๋ง์ฝ A๊ฐ B๋ฅผ ํธ์ถํ์ ๋ (์ผ์ ์์ผฐ์ ๊ฒฝ์ฐ)
Non-Blocking : A๊ฐ B์๊ฒ ์ผ์ ์ํค๊ณ , ๋ฐ๋ก ์๊ธฐ ์๋ ํ๋ ์ผ์ ๊ณ์ ํ๋ค.
Blocking : A๋ B๊ฐ ์ผ์ ๋ค ํ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. B ์์ ์ด ๋ค ๋๋์ผ A๋ ์๊ธฐ ํ ์ผ์ ๋ง์ ํ๋ค.
๋ค์์ ์ ์ ํ๋ก์ธ์ค ์งํ์ค, I/O ์์ ์ด ํธ์ถ๋์์ ๊ฒฝ์ฐ์ ๊ทธ๋ฆผ์ด๋ค. ์ด๋ ์ ์ ํ๋ก์ธ์ค๋ ์์ ์ ์์ ์ ์ค๋จํ๊ณ ๋๊ธฐํ๋๊ฐ? ์๋๋ฉด ๊ณ์ ์งํํ๋ ๊ฐโ
Non-Blocking : ์ ์ ํ๋ก์ธ์ค๊ฐ I/O๋ฅผ ์ํค๊ณ ์์ ์ ์ผ์ ๊ณ์ ํ๋ค.
Blocking : ์ ์ ํ๋ก์ธ์ค๊ฐ I/O ์์ ์ด ๋๋ ๋๊น์ง ์ค๋จํ๋ค.
๋ง์ฝ A โ B ํธ์ถํ์์ ๋,
Synchronous๋ A๊ฐ ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ค.
Asynchronous๋ B๊ฐ ์๋ ค์ค๋ค. A๋ ์๊ธฐ ์ผ๋ง ํ๋ค๊ฐ B๊ฐ ์๋ ค์ฃผ๋ฉด ๊ทธ๋ ์ฒ๋ฆฌํ๋ค.
์๋๋ ๋๊ฐ์ด ์ ์ ํ๋ก์ธ์ค๊ฐ I/O ์์ ์ ์์ฒญํ ๊ฒฝ์ฐ์ด๋ค. ์ ์ ํ๋ก์ธ์ค๊ฐ I/O์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฐโ
Synchronous : ์ ์ ํ๋ก์ธ์ค๊ฐ I/O ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ ๊ธฐ๋ค๋ฆฐ๋ค. ๊ณ์ํด์ I/O ์์ ์ด ์๋ฃ๋์๋ ์ง ํ์ธํ๋ค.
Asynchronous : ์ ์ ํ๋ก์ธ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค. I/O๊ฐ ์์์ ์์ ํ, ๊ฒฐ๊ณผ๋ฅผ ์๋ฆผ์ผ๋ก ์๋ ค์ค๋ค. ์ ์ ํ๋ก์ธ์ค๋ ์๋ฆผ์ด ์ค๋ฉด ๊ทธ๋ I/O ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ํ์ํ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
๋๊ธฐ & ๋ธ๋กํน
A๊ฐ B๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ, A๋ ๋๊ธฐํ๋ฉด์ B์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ ๋ฌผ์ด๋ณธ๋ค(๊ธฐ๋ค๋ฆฐ๋ค).
ex) ์๋ฐ ์ฝ์์ฐฝ์์ ์ ๋ ฅ ๋ฐ๋ ๊ฒฝ์ฐ
๋๊ธฐ & ๋ ผ๋ธ๋กํน
A๊ฐ B๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ, A๋ ์๊ธฐ ํ ์ผ์ ํ๋ฉด์ B์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ ๋ฌผ์ด๋ณธ๋ค(๊ธฐ๋ค๋ฆฐ๋ค).
ex) ๋๊ท๋ชจ ์ฌ์ฉ์๋ค์๊ฒ ํธ์ ๋ฉ์ธ์ง๋ฅผ ์ ์กํ ๊ฒฝ์ฐ
๋น๋๊ธฐ & ๋ ผ๋ธ๋กํน
A๊ฐ B๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ, A๋ ๋ค๋ฅธ ์ผ์ ํ๋ฉด์ B๊ฐ ์์์ ์๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ค๋ค.
ex) ajax, ์ฝ๋ฐฑํจ์
์๋น์ค๋ง๋ค ๋ค๋ฅด๋ค๊ณ ๋ณผ ์ ์๋ค. ๋น๋๊ธฐ/๋ ผ๋ธ๋กํน์ด ์ค๋ ๋๊ฐ ์ผ์ ์ฌ์ง ์๊ณ ๊ณ์ํ๋ฏ๋ก ํจ์จ์ ์ด์ง๋ง, ๋ค์์ ๊ฒฝ์ฐ๋ฅผ ๋ณด์. ๋ฐฐ๋ฌ ์ดํ์์ ์ฃผ๋ฌธํ๋ ์ํฉ์ด๋ค.
1๏ธโฃ ์ง์ญ ์ ํ โ 2๏ธโฃ ๊ฐ๊ฒ ์ ํ โ 3๏ธโฃ ๋ฉ๋ด ์ ํ โ 4๏ธโฃ ๊ฒฐ์
์ด ์์๋ก ์ ํ/๊ฒ์ํ๊ณ ์งํํด์ผํ๋ค. ์ ๋จ๊ณ๊ฐ ๋๋์ง ์์ผ๋ฉด, ๋ท ๋จ๊ณ๋ฅผ ์งํํ ์ ์๊ณ (๋๊ธฐ), ์ฌ์ฉ์์ ์ ํ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ํ ๋ค๋ฅธ ์์ ๋ ์์ผ๋ ๋๊ธฐํ๋ค(๋ธ๋กํน).
์ด๋ ๋๊ธฐ์ ์ธ ์์ ์ด๋ค. ์ฆ, 1 โ 2 โ 3โ 4 ๊ฐ ๊ฐ ์คํ ์์์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์์ ์ผํด์ผ ํ๋ค. ์ ์์์์ ๊ฐ๊ฒ๋ฅผ ์ ํํ์ง ์์ผ๋ฉด, ๋ฉ๋ด๋ฅผ ์ ํํ ์ ์๋ค. ์ด์ฒ๋ผ ์ ๋จ๊ณ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ชป ๋ฐ์ผ๋ฉด, ์ด์ฐจํผ ๋ค์ ์ผ์ ํ์ง ๋ชปํ๋ค(๋๊ธฐ). ๊ทธ๋ฆฌ๊ณ ์ค๊ฐ์ค๊ฐ ์ด๋ฌํ ๋๊ธฐ ์๊ฐ์ด ์๊น์์ ์์ ๋ค๋ฅธ ์์ ์ ์ํํ๋ค๋ฉด, ๊ทธ ๋น์ฉ์ด ๋ ๋น์ธ๋ค. (์คํ๋ ค ๋ ผ๋ธ๋กํน์ด๋ผ๋ฉด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค) ์ฐจ๋ผ๋ฆฌ ์ฌ์ฉ์์ ์ ํ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ ๋ ํจ์จ์ ์ด๋ค.
๋ฐ๋ฉด ์น์๋น์ค๋ผ๋ฉด, ์ ์ ํ๋ก์ธ์ค์์ I/O ์์ ๋ ๋ง์ด ์ด๋ฃจ์ด์ง๊ณ , ๋น๋๊ธฐ์ ์ผ๋ก ์ฌ๋ฌ ์๋น์ค๋ฅผ ์ค๊ฐ๋ฉฐ ์ฌ์ฉํ๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๋ผ๋ฉด ํ ์ค๋ ๋๋ฅผ ๋ง์ด ํ์ฉํ ์ ์๋ ๋น๋๊ธฐ/๋ ผ๋ธ๋กํน ๋ฐฉ์์ด ์ ๋ฆฌํ๋ค.
๋ฐ๋ผ์ ๋น๋๊ธฐ/๋ ผ๋ธ๋กํน์ด ๋น๋๊ธฐ ์์ (์น์๋น์ค)์์๋ ์ค๋ ๋๋ฅผ ๋ง์ด ํ์ฉํ์ฌ ํจ์จ์ ์ด๋, ๋๊ธฐ์ ์ธ ์์ (๋ฐฐ๋ฌ์ฃผ๋ฌธ)์์ ๋ง์ง ์๋ค.
Reference