Synchronous/Asynchronous
Asynchronous
ํ๋ก๊ทธ๋๋ฐ(programming) ๊ด์ ์์์ asynchronous(๋น๋๊ธฐ)
synchronous(๋๊ธฐ์)
ํ๋์ ์์ ์ด ๋๋๋ฉด ๋ค์ ์์ ์ ํจ
์ฌ๋ฌ ์์ (task)๋ค์ ์์ฐจ์ ์ผ๋ก ์คํํ๋๋ก ๊ฐ๋ฐํจ
์)
์์ ์ค๋นํ๊ธฐ : ๊ตญ ๋์ด๊ณ ๋ค ๋์ด๋ฉด, ํ๋ฐ ๋ฐ์ฐ๊ณ ๋ค ๋ฐ์์ง๋ฉด, ์คํธ ๊ตฝ๊ธฐ
42 ์น์๋ธ : ํ๋์ ์์ฒญ์ ๋ํด ์๋ต์ ๋ฐํํ ๋๊น์ง ์๋ฒ๊ฐ ๊ทธ ์ผ๋ง ํจ
Asynchronous(๋น๋๊ธฐ)
์์ฐจ์ ์ผ๋ก ์คํํ ํ์ ์์ด ๋์์ ์์ ์ ํ๋ ๊ฒ
์ฌ๋ฌ ์์ ๋ค์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ๋๋ก ๊ฐ๋ฐํจ
์)
์์ ์ค๋นํ๊ธฐ : ๊ตญ ๋์ด๋ ๋์์, ํ๋ฐ์ ์ ์๋ ์ธ์ง ๋ฐ์ฐ๊ณ , ๋ฐ์์ง๋ ๋์์ ์คํธ ๊ตฝ๊ธฐ
42 ์น์๋ธ : ํ๋์ ์์ฒญ์ด ์์ ๋, ๋ค์ I/O ๋ฐ์ ์ ๊น์ง๋ง ์ฒ๋ฆฌํ๊ณ , ๋ค๋ฅธ ์์ฒญ์ I/O ์ด๋ฒคํธ ๋ฐ์๊ฑด์ ์ฒ๋ฆฌํจ. ํ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ด ์์ฐจ์ ์ผ๋ก ๋์ง ์๊ณ , ๋ค๋ฅธ ์์ฒญ๊ณผ ๋์์ ์ฒ๋ฆฌํจ
Synchronous vs Asynchronous

์ฃผ์ํ ์
asynchronous programming != multithreading
asynchronous programming : ์ฌ๋ฌ ์์ ์ ๋์์ ์คํํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ๋ก
multi-threading : asynchronous programming์ ํ ์ข ๋ฅ
asynchronous programming ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐฉ๋ฒ
multi-threads : ๋ฉํฐ์ฝ์ด๋ฅผ ํ์ฉํ ์ ์๋ ์ฅ์ , ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ๊ณผ race condition ์ผ์ด๋ ์ ์๋ ๋จ์
non-block I/O : CPU ์์ ๊ณผ I/O ์์ ์ ๋์์ ํ ์ ์๋ ์์ ์ด๊ธฐ์, ๊ทธ ์์ ์ ๋์์ ํจ
I/O device๋ CPU์ญํ ์ ํ๋ device controler๊ฐ ์์. device controler๊ฐ ์ฅ์น์์ ๋ฐ์ดํฐ๋ฅผ I/Oํ๊ณ ์์ ๋, ์ปดํจํฐ์ CPU๋ ๋ค๋ฅธ ์ผ ํ ์ ์์ (์ง์ง๋ก ๋์์ ํจ)
I/O๊ด์ ์์ ๋น๋๊ธฐ
๋ฌธ๋งฅ์ ๋ฐ๋ฅธ case 1
synchronous I/O = block I/O
asynchronous I/O = non-block I/O
๋ฌธ๋งฅ์ ๋ฐ๋ฅธ case 2
synchronous I/O : ์์ฒญ์๊ฐ I/O ์๋ฃ๊น์ง ์ฑ๊ฒจ์ผ ํ ๋
asynchronous I/O : ์์ ์๊ฐ OS๋ก๋ถํฐ ์์ ์๋ฃ์ ๋ํด noti๋ฅผ ๋ฐ๊ฑฐ๋, ์์ ์ ์์ํ ๋ callback์ ์ ๋ฌํด์ ์์ ์ด ๋๋ ๋ OS๊ฐ ์์์ callback์ ์คํ
๋ฌธ๋งฅ์ ๋ฐ๋ฅธ case 3
asynchronous I/O : block I/O๋ฅผ ๋ค๋ฅธ thread์์ ์คํํจ
ASP.NET์์ async๋ก thread pool ์ฌ์ฉํ๋๊ฒ ์ด ๊ฒฝ์ฐ์ผ ๋ฏ
๋ฐฑ์๋ ์ํคํ
์ฒ ๊ด์ (a)synchronous communication
ํ๋์ ์๋น์ค๋ ๊ธฐ๋ฅ๊ณผ ์ญํ ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ก ๊ตฌ์ฑ๋๊ณ , ์ด๋ค ์ฌ์ด์์๋ ๋น๋ฒํ๊ฒ ์ปค๋ฎค๋์ผ์ด์ ์ด ๋ฐ์ํจ
synchronous
๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์ปค๋ฎค๋์ผ์ด์ ํ ๋, ํ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ๋ค๋ฅธ ๋ง์ดํฌ๋ก ์๋น์คํํ ์ด๋ฒคํธ๋ฅผ ์ฃผ๋ฉด, ๊ทธ ์ด๋ฒคํธ๊ฐ ์ฒ๋ฆฌ๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์์ ์ ๊ณ์ํจ
ํน์ ๋ง์ดํฌ๋ก ์๋น์ค์์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด, ๋ค๋ฅธ ๋ง์ดํฌ๋ก ์๋น์ค์๊ฒ๋ ์น๋ช ์ ์ธ ์ํฅ์ ์ฃผ๊ฒ ๋จ

asynchronous
Message Queue๋ฅผ ํ์ฉํจ
์ ๋ฌํ๊ณ ์ถ์ ์ด๋ฒคํธ๊ฐ ์์ผ๋ฉด message queue์ ๋ฃ๊ณ ์๊ธฐํ ์ผ ํจ
๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค๋ ๋ค๋ฅธ ๋ง์ดํฌ๋ก์๋น์ค๋ ๊ณต์ ํ๋ message queue๋ฅผ ๊ณ์ํด์ ์ดํด๋ณด๊ณ , ์์ผ๋ฉด ์ฒ๋ฆฌํจ
ํน์ ๋ง์ดํฌ๋ก ์๋น์ค์์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ๋ค๋ฅธ ๋ง์ดํฌ๋ก ์๋น์ค์๊ฒ๋ ์ฅ์ ์ ํ๊ธ๋ ฅ์ด ์ฝํจ

์ฐธ๊ณ ๋ฐ ๊ทธ๋ฆผ ์ถ์ฒ
Last updated