๐ก ๋ธ๋กํน(Blocking) VS ๋ ผ๋ธ๋กํน(Non- Blocking)
๋ธ๋ก/๋ ผ๋ธ๋ก ๊ฐ๋ ์ ๊ธฐ์ ์ ์ผ๋ก ๋ช ํํ ๊ตฌ๋ถ์ด ๋๋ ๊ฐ๋ ์ด๋ค.
๋ธ๋กํน์ ์ดํดํ๊ธฐ ์ํด์ ์๋์ ์ฉ์ด๋ฅผ ์ ํํ ์ง๊ณ ๋์ด๊ฐ์ผ ํ๋ค.
โ ์ ์ด๊ถ
- ํจ์๋ฅผ ์คํํ ๊ถ๋ฆฌ
- ์ ์ด๊ถ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋๋์ ๋ฐ๋ผ ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน์ ์ฐจ์ด๊ฐ ๋ํ๋๋ค.
๋ ๊ฐ์ ํจ์ A, B ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. Aํจ์๊ฐ ๋จผ์ ์คํ๋๋ค๊ณ ํ ๋, ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน์ ์ฐจ์ด๋ ์๋์ ๊ฐ๋ค.
1) ๋ธ๋กํน
- ๋ฉ์ธ ํจ์๊ฐ ํจ์ A์๊ฒ ์ ์ด๊ถ์ ์ฃผ๋ฉฐ A๋ฅผ ํธ์ถํ๋ค.
- A ํจ์๋ ์คํ๋๊ณ A ํจ์๊ฐ ๋๋ ๋ ๊น์ง Bํจ์์๊ฒ ์ ์ด๊ถ์ ๋๊ฒจ์ฃผ์ง ์๋๋ค.
- A ํจ์๊ฐ ์ข ๋ฃ๋๋ฉด B ํจ์์๊ฒ ์ ์ด๊ถ์ ์ฃผ๊ณ ํธ์ถํ๋ค.
์ฆ, ํธ์ถ๋ ํจ์์ ๋ชจ๋ ์ฝ๋๊ฐ ๋๋ ๋ ๊น์ง ์ ์ด๊ถ์ ๊ณ์ ๊ฐ์ง๊ณ ๋ค๋ฅธ ํจ์์๊ฒ ์ ์ด๊ถ์ ๋๊ธฐ์ง ์์ผ๋ฉด ๋ธ๋กํน ๋ฐฉ์์ด๋ค.
2) ๋ ผ๋ธ๋กํน
- ๋ฉ์ธ ํจ์๊ฐ ํจ์ A์๊ฒ ์ ์ด๊ถ์ ์ฃผ๋ฉฐ A๋ฅผ ํธ์ถํ๋ค.
- A ํจ์๋ ์คํ๋๊ณ ๊ณง๋ฐ๋ก ์ ์ด๊ถ์ returnํ๋ค.
- A ํจ์๊ฐ ์คํ๋๋ ๋์์, ๋ฉ์ธ ํจ์๊ฐ ์ ์ด๊ถ์ B ํจ์์๊ฒ ์ฃผ๋ฉฐ ํธ์ถํ๋ค.
์ฆ, ํธ์ถ๋ ํจ์์ ๋ชจ๋ ์ฝ๋๊ฐ ๋๋์ง ์๊ณ ์คํ ํ ๊ณง๋ฐ๋ก ์ ์ด๊ถ์ returnํ์ฌ ๋ค๋ฅธ ํจ์๋ ์คํ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐฉ์์ด ๋ ผ๋ธ๋กํน ๋ฐฉ์์ด๋ค.
๐ก ๋๊ธฐ(Synchronous)์ ๋น๋๊ธฐ(Asynchronous)
๋ธ๋กํน๊ณผ ๋ค๋ฅด๊ฒ ๊ธฐ์ ์ ์ผ๋ก ๊ตฌ๋ถ๋์ง ์์ผ๋ฉฐ, ์ถ์์ ์ธ ํ์์ ๋ํ ๋ด์ฉ์ด๋ค.
๋๊ธฐ ๋น๋๊ธฐ๋ ๋ธ๋ก๊ณผ ์ ์ฌํ์ง๋ง, ์ฐจ์ด์ ์ด ์๋ค.
๊ฒฐ๊ณผ๊ฐ์ ํ์ธํ๋ค๋ ๊ฒ์ด๋ค.
1) ๋๊ธฐ
๋ธ๋กํน๊ณผ ์ ์ฌํ๋ค.
๋ธ๋กํน์ ๊ฒฝ์ฐ ํจ์์ ๊ฒฐ๊ณผ๊ฐ ๋์๋์ง ํ์ธํ์ง ์์ง๋ง, ๋๊ธฐ๋ ํ์ธ์ ํ๋ค.
A ํจ์๊ฐ B ํจ์๋ฅผ ํธ์ถํ ๋ค, B ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ ๊ณ์ ํ์ธํ๊ณ ์ ๊ฒฝ์ฐ๋ ๊ฒ์ด ๋๊ธฐ์ด๋ค.
์ฆ, ํธ์ถ๋ ํจ์์ ์ํ ๊ฒฐ๊ณผ ๋ฐ ์ข ๋ฃ๋ฅผ ํธ์ถํ ํจ์๋ ํจ๊ป ์ ๊ฒฝ์ฐ๊ณ ์๋ ๊ฒ์ ๋งํ๋ค.
2) ๋น๋๊ธฐ
๊ฒฐ๊ณผ ํ์ธ๊ณผ ๋ฌด๊ดํ๊ฒ ๊ณ์ ์งํํ๋ ๊ฒ์ ๋งํ๋ค.
A ํจ์๊ฐ B ํจ์๋ฅผ ํธ์ถํ ๋ค, A ํจ์๋ B ํจ์๋ฅผ ์ ๊ฒฝ์ฐ์ง ์๊ณ ์ ํ ์ผ์ ํ๊ณ B ํจ์ ๋ํ ์ ํ ์ผ์ ํ๋ค.
์ฆ, ํธ์ถ๋ ํจ์์ ์ํ ๊ฒฐ๊ณผ ๋ฐ ์ข ๋ฃ๋ฅผ ํผ์ ์์์ ์ ๊ฒฝ์ฐ๊ณ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค.
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ด๋? ์ฅ๋จ์ ๊ณผ ํน์ง, SOLID (0) | 2022.11.13 |
---|