[์ด์์ฒด์ ] ๋๊ธฐ์ ๋น๋๊ธฐ, Blocking๊ณผ Non-Blocking
๋๊ธฐ VS ๋น๋๊ธฐ
๋๊ธฐ๋ ์์ฐจ์ , ์ง๋ ฌ์ ์ผ๋ก ํ ์คํฌ๋ฅผ ์ํํ์ง๋ง ๋น๋๊ธฐ๋ ๋ณ๋ ฌ์ ์ผ๋ก ํ ์คํฌ๋ฅผ ์ํํฉ๋๋ค.
๋๊ธฐ(Synchronous)๋?
๋๊ธฐ๋ ์์ฒญ์ ๋ณด๋ธ ํ ์๋ต(๊ฒฐ๊ณผ๋ฌผ)์ ๋ฐ์์ผ์ง๋ง ๋ค์ ๋์์ด ์ด๋ฃจ์ด์ง๋ ๋ฐฉ์์ ๋งํฉ๋๋ค. ์ฆ, ๋ชจ๋ ์ผ์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฉฐ ์ด๋ค ์์ ์ด ์ํ์ค์ด๋ผ๋ฉด ๋ค์ ์์ ์ ๋๊ธฐํฉ๋๋ค.
- ์ฅ์ : ์ค๊ณ๊ฐ ๊ฐ๋จํ๊ณ ์ง๊ด์
- ๋จ์ : ๊ฒฐ๊ณผ๋ฅผ ๋ณผ๋ ๊น์ง ์๋ฌด๊ฒ๋ ๋ชปํ๊ณ ๋๊ธฐ
๋น๋๊ธฐ(Asynchronous)๋?
๋น๋๊ธฐ๋ ๋์์ ์ผ์ด๋์ง ์๋๋ค๋ ์๋ฏธ๋ก, ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋์ง ์๋๋ค๋ ์ฝ์์ ๋๋ค. ์ฆ, ์์ฒญํ ๊ทธ ์๋ฆฌ์์ ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง์ง ์์๋ ๋๋ฉฐ ๋ ธ๋ ์ฌ์ด์ ์์ ์ฒ๋ฆฌ ๋จ์๋ฅผ ๋์์ ๋ง์ถ์ง ์์๋ ๋ฉ๋๋ค.
- ์ฅ์ : ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ด์ง๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๋ ๊ทธ๋์ ๋ค๋ฅธ ์์ ์ด ๊ฐ๋ฅํด ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
- ๋จ์ : ์ค๊ณ๊ฐ ๋๊ธฐ๋ณด๋ค ๋ณต์กํจ
Blocking VS Non-Blocking
Blocking/Non-Blocking์ ๋๊ธฐ/๋น๋๊ธฐ์ ๋ค๋ฅธ ๊ด์ ์ผ๋ก, ๋ด๊ฐ ์ง์ ์ ์ดํ ์ ์๋ ๋์(IO, ๋ฉํฐ์ค๋ ๋)์ ์๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ถ๋ฅ์ ๋๋ค. Blocking์ ๋์์ ์์ ์ด ๋๋ ๋๊น์ง ์ ์ด๊ถ์ ๋์์ด ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ Non-Blocking์ ๋์์ ์์ ์๋ฃ์ฌ๋ถ์ ์๊ด์์ด ์๋ก์ด ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
Blocking์ด๋?
์ง์ ์ ์ดํ ์ ์๋ ๋์์ ์์ ์ด ๋๋ ๋๊น์ง ์ ์ด๊ถ์ ๋๊ฒจ์ฃผ์ง ์๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ด ํธ์ถํ๋ ํจ์๊ฐ I/O ์์ ์ ์์ฒญํ ๋ I/O ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ๋๊น์ง ์๋ฌด ์ผ๋ ํ์ง ๋ชปํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋งํฉ๋๋ค.
- ์ฅ์ : ์์ ์ด ์์ฐจ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ์ ์์ ํ๋ฆ์ ์ฝ๊ฒ ์ดํดํ ์ ์์
- ๋จ์ : ๋ธ๋กํน์ด ์ด๋ฃจ์ด์ง๋ ๋์์ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ด์ฉํ์ง ๋ชปํจ
Non-Blocking์ด๋?
์ง์ ์ ์ดํ ์ ์๋ ๋์์ ์์ ์ฒ๋ฆฌ ์ฌ๋ถ์ ์๊ด์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ด ํธ์ถํ๋ ํจ์๊ฐ I/O ์์ ์ ์์ฒญํ ๋ค I/O ์์ ์ ๋ํ ์ฒ๋ฆฌ ์๋ฃ ์ฌ๋ถ์ ์๊ด์์ด ๋ฐ๋ก ์์ ์ ์์ ์ ์ํํ ์ ์๋ ๊ฒ์ ๋งํฉ๋๋ค.
- ์ฅ์ : ๋ฆฌ์์ค๊ฐ ๋ญ๋น๋๋ ์๊ฐ์ด ์๊ธฐ์, ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ๊ท ์ผํ๊ณ ํจ์จ์ ์ผ๋ก ์ด์ฉ ๊ฐ๋ฅ
- ๋จ์ : ์ ๋ฌดํ๋ฆ์ด ๋งค์ฐ ๋ณต์กํด์ง๋ ๋จ์ ์ด ์กด์ฌ
[์ฐธ๊ณ ]
https://velog.io/@tess/Sync-Async-vs-Blocking-non-Blocking
https://velog.io/@alicia-mkkim/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%9E%80
https://iceflower.gitbooks.io/vertx-studybook/content/thread-safe.html