Skip to content

Latest commit

ย 

History

History
329 lines (187 loc) ยท 10.3 KB

SyncAsyncBlockNonblock.md

File metadata and controls

329 lines (187 loc) ยท 10.3 KB

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ & ๋ธ”๋กœํ‚น๊ณผ ๋…ผ๋ธ”๋กœํ‚น

๋™๊ธฐ & ๋น„๋™๊ธฐ
๋ธ”๋กœํ‚น & ๋…ผ๋ธ”๋กœํ‚น
๋น„๊ต
์กฐํ•ฉ


๋™๊ธฐ & ๋น„๋™๊ธฐ

์กฐ๊ฑด

๋™๊ธฐ & ๋น„๋™๊ธฐ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ 2๊ฐœ ์ด์ƒ์ด์—ฌ์•ผ ํ•œ๋‹ค.


๊ด€์ 

์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ž‘์—…๋“ค์„ย ์–ด๋– ํ•œ โ€œํ๋ฆ„โ€์œผ๋กœ ์ฒ˜๋ฆฌ ํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๊ด€์ 


๋™๊ธฐ์™€ ๋น„๋™๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€ โ†’ ์ž‘์—… ์™„๋ฃŒ ์—ฌ๋ถ€

์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๋Š” ์ฃผ์ฒด์— ๋”ฐ๋ผ ๋™๊ธฐ & ๋น„๋™๊ธฐ๋กœ ๋‚˜๋‰œ๋‹ค.

  • ๋™๊ธฐ : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ฃผ์ฒด๋Š” ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ๋น„๋™๊ธฐ : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ฃผ์ฒด๋Š” ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ž‘์—… ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

## ๐Ÿงฉ๋™๊ธฐ ์ž‘์—…์ด๋ž€?

๋™๊ธฐ์‹ ์ž‘์—…์ด๋ž€ 2๊ฐœ ์ด์ƒ์˜ ์ฃผ์ฒด๊ฐ€ ์ž‘์—…์„ ๋™์‹œ์— ์‹œ์ž‘ , ์ž‘์—…์„ ๋™์‹œ์— ์ข…๋ฃŒ , ํ•˜๋‚˜์˜ ์ž‘์—…์„ ๋๋‚˜๋Š” ๋™์‹œ์— ๋‹ค๋ฅธ ์ฃผ์ฒด๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ ํ•˜๋Š” ์‹์˜ ํ๋ฆ„์œผ๋กœ ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

image.png

  • ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ๋งž์ถ˜(Synchronize) ๊ฒฝ์šฐ
    • ex) ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ์ž‘์—…๊ณผ ์„ค์น˜๊ฒฝ๊ณผ๋ฅผ Progress Bar๋กœ ํ‘œ์‹œํ•˜๋Š” ์ž‘์—…์€ ๋™์‹œ์— ์‹œ์ž‘๋˜๊ณ  ๋™์‹œ์— ๋๋‚œ๋‹ค. (๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น ์ž‘์—…)

image.png

  • ์ž‘์—… ์ข…๋ฃŒ ์‹œ๊ฐ„์— ๋งž์ถฐ(Synchronize) ๋‹ค๋ฅธ ์ฃผ์ฒด๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ (์—”์ง€๋‹ˆ์–ดA์˜ ์ž‘์—… ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์–ด์•ผ ์—”์ง€๋‹ˆ์–ดB๊ฐ€ ์ž‘์—…์„ ํ• ์ˆ˜ ์žˆ๋‹ค)

## ๐Ÿงฉ๋น„๋™๊ธฐ ์ž‘์—…์ด๋ž€?

๋น„๋™๊ธฐ์‹ ์ž‘์—…์ด๋ž€ 2๊ฐœ ์ด์ƒ์˜ ์ฃผ์ œ๊ฐ€ ์ž‘์—…์˜ ์‹œ์ž‘์‹œ๊ฐ„, ์ข…๋ฃŒ์‹œ๊ฐ„์— ๊ด€๊ณ„ ์—†์ด ๊ฐ์ž ๋ณ„๋„์˜ ์‹œ์ž‘์‹œ๊ฐ„, ์ข…๋ฃŒ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

image.png

  • ์„œ๋กœ์˜ ์ž‘์—… ์ˆœ์„œ๊ฐ€ ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
    • ex) html ํŒŒ์ผ์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ์ž‘์—…๊ณผ img ํƒœํฌ์— ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ์ž‘์—… (๋น„๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น ์ž‘์—…)


๋ธ”๋กœํ‚น & ๋…ผ๋ธ”๋กœํ‚น

์กฐ๊ฑด

๋ธ”๋กœํ‚น & ๋…ผ๋ธ”๋กœํ‚น์€ ์ž‘์—…์˜ ๋Œ€์ƒ์ด 2๊ฐœ ์ด์ƒ์ด์—ฌ์•ผ ํ•œ๋‹ค.


๊ด€์ 

์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” (ํ•˜๋‚˜์˜) ์ž‘์—…์ด,ย ์ „์ฒด์ ์ธ ์ž‘์—…ย ํ๋ฆ„์„ โ€œ๋ง‰๋А๋ƒ ์•ˆ๋ง‰๋А๋ƒโ€์— ๋Œ€ํ•œ ๊ด€์ 


๋ธ”๋กœํ‚น๊ณผ ๋…ผ๋ธ”๋กœํ‚น์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€ โ†’ ์ œ์–ด๊ถŒ

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ฃผ์ฒด๊ฐ€ ํ•จ์ˆ˜์—๊ฒŒ ์ œ์–ด๊ถŒ์„ ๋„˜๊ฒจ์ฃผ๋Š”์ง€ ์— ๋”ฐ๋ผ ๋ธ”๋กœํ‚น & ๋…ผ๋ธ”๋กœํ‚น์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

  • ๋ธ”๋กœํ‚น : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ฃผ์ฒด๊ฐ€ ์ œ์–ด๊ถŒ์„ ํ•จ์ˆ˜์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์˜ ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. (ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๋Š” ์ž‘์—…์„ ๋งˆ์น  ๋•Œ๊นŒ์ง€ ์ œ์–ด๊ถŒ์„ ๊ฐ–๊ณ  ์žˆ๋Š”๋‹ค)
  • ๋…ผ๋ธ”๋กœํ‚น : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ฃผ์ฒด๊ฐ€ ๊ณ„์† ํ•ด์„œ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

## ๐Ÿงฉ๋ธ”๋กœํ‚น ์ž‘์—…์ด๋ž€?

ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ฃผ์ฒด๊ฐ€ ์ œ์–ด๊ถŒ์„ ํ•จ์ˆ˜์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋ฉด ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€(blocked) ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์œผ๋ฉด ๊ทธ์ œ์„œ์•ผ ์ž‘์—…์„ ์ด์–ด๊ฐ„๋‹ค.

image.png

  • ex) Java์—์„œ JDBC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB์— ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์ž‘์—…

## ๐Ÿงฉ๋…ผ๋ธ”๋กœํ‚น ์ž‘์—…์ด๋ž€?

์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋‹ค๋ฅธ ์ž‘์—…์„ ์š”์ฒญํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

image.png



๋น„๊ต

๋น„๋™๊ธฐ์™€ ๋…ผ๋ธ”๋กœํ‚น์€ ๋ฌด์Šจ ์ฐจ์ด?

  • ๋น„๋™๊ธฐ๋Š” ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์„œ๋กœ์˜ ์‹œ๊ฐ„์„ ๋งž์ถ”์ง€ ์•Š๋Š”๋‹ค.
  • ๋…ผ๋ธ”๋กœํ‚น์€ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์ด ์ „์ฒด ์ž‘์—…์˜ ํ๋ฆ„์„ ๋ง‰์ง€ ์•Š๋Š”๋‹ค.

๋™๊ธฐ์™€ ๋ธ”๋กœํ‚น์€ ๋ฌด์Šจ ์ฐจ์ด?

  • ๋™๊ธฐ๋Š” ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์„œ๋กœ์˜ ์‹œ๊ฐ„์„ ๋งž์ถ˜๋‹ค.
  • ๋ธ”๋กœํ‚น์€ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์ด ์ „์ฒด ์ž‘์—…์˜ ํ๋ฆ„์„ ๋ง‰๋Š”๋‹ค.

์˜ˆ์‹œ

๊ธ‰ํ•˜๊ฒŒ ์•Œ์•„์•ผ ํ•˜๋Š” ๋‹ต์„ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ฌผ์–ด๋ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ

  1. ๋™๊ธฐ: ์ „ํ™”๋กœ ๋ฌผ์–ด๋ด์„œ ์ฆ‰๋‹ต์„ ์–ป๋Š”๋‹ค.
  2. ๋น„๋™๊ธฐ : ์ด๋ฉ”์ผ ์†ก์‹ ์„ ์™„๋ฃŒ(return)ํ–ˆ์ง€๋งŒ, ๋‹ต์ด ์–ธ์ œ์˜ฌ์ง€ ๋ชจ๋ฅธ๋‹ค
  3. ๋™๊ธฐ + ๋ธ”๋กœํ‚น : ์ „ํ™”๋ฅผ ํ–ˆ์ง€๋งŒ ์ƒ๋Œ€๊ฐ€ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ์ „์ „๊ธ๊ธ ๊ณ„์† ๋Œ€๊ธฐํ•œ๋‹ค.
  4. ๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น : ์ „ํ™”๋ฅผ ํ–ˆ์ง€๋งŒ ์ƒ๋Œ€๊ฐ€ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ๋Š์—ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ „ํ™”ํ•˜๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ์–ด๋А ์ˆœ๊ฐ„ ๋ฐ›์•„์„œ ๋‹ต์„ ์–ป๋Š”๋‹ค.

์กฐํ•ฉ

ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฐœ๋ฐœ ๋ถ€์„œ ์˜ˆ์‹œ

  • ํ”„๋กœ์ ํŠธ์—๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…๋“ค์ด ์žˆ๋‹ค โ†’ ๋ธ”๋กœํ‚น & ๋…ผ๋ธ”๋กœํ‚น
  • ํ”„๋กœ์ ํŠธ์˜ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๋ช…์ด๋‹ค โ†’ ๋™๊ธฐ & ๋น„๋™๊ธฐ

## ๐Ÿงฉ๋™๊ธฐ + ๋ธ”๋กœํ‚น

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ์ ‘ํ•˜๋Š” ๋™๊ธฐ ๋ฐฉ์‹์˜ ์˜ˆ๋Š” ๋ฐ”๋กœย ๋™๊ธฐ & ๋ธ”๋กํ‚นย ๋ฐฉ์‹์ด๋‹ค


๐Ÿ“Œ์˜ˆ์‹œ1

sync-blocking.png

๋™๊ธฐ

๊ธฐ๋Šฅ A์˜ ๊ฐœ๋ฐœ์ด ์„ ํ–‰๋˜์–ด์•ผ ๊ธฐ๋Šฅ B๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—”์ง€๋‹ˆ์–ดA์˜ ์ž‘์—…์ด ๋๋‚˜๋Š” ๋™์‹œ์— ์—”์ง€๋‹ˆ์–ด B๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋„๋ก ์ž‘์—… ํ๋ฆ„(์ˆœ์„œ)์„ ๋งž์ถ”์–ด์•ผ ํ•œ๋‹ค.

๋ธ”๋กœํ‚น

์—”์ง€๋‹ˆ์–ดA๊ฐ€ ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ํ”„๋กœ์ ํŠธ์˜ ์ง„ํ–‰์ด ๋ฉˆ์ถ˜๋‹ค(blocked). ๊ธฐ๋ŠฅA๋ฅผ ๋ชจ๋‘ ๊ฐœ๋ฐœํ•œ ๋’ค์—์•ผ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰๋œ๋‹ค.



๐Ÿ“Œ์˜ˆ์‹œ2

image.png

๋™๊ธฐ

์ž‘์—… ์ˆœ์„œ: ์ปค๋„์˜ Read IO ์ž‘์—…์ด ์„ ํ–‰๋˜๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Read() ํ•จ์ˆ˜์˜ ๋‚˜๋จธ์ง€ ์ž‘์—…์ด ๋‚˜์ค‘์— ์ˆ˜ํ–‰๋œ๋‹ค.

๋ธ”๋กœํ‚น

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ปค๋„์˜ Read IO ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐํ•ด์•ผํ•œ๋‹ค.


## ๐Ÿงฉ๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น

๋ชจ๋“  ์‹คํ–‰๊ณผ ํ๋ฆ„์ด ์ˆœ์ฐจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์–ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ  ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์กฐํ•ฉ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.


๐Ÿ“Œ์˜ˆ์‹œ1

sync-non-blocking.png

๋™๊ธฐ

๊ธฐ๋ŠฅA๊ฐ€ ๊ฐœ๋ฐœ์ด ๋˜์–ด์•ผ ๊ธฐ๋Šฅ B๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

๋…ผ๋ธ”๋กœํ‚น

์—”์ง€๋‹ˆ์–ดA๊ฐ€ ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ํ”„๋กœ์ ํŠธ์˜ ์ง„ํ–‰์„ ๋ฉˆ์ถ”์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ๊ธฐ๋ŠฅA์˜ ๊ฐœ๋ฐœ์ด ๋๋‚ฌ๋Š”์ง€ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ์ž‘์—…(polling)์„ ํ•œ๋‹ค.



๐Ÿ“Œ์˜ˆ์‹œ2

image.png

๋™๊ธฐ

์ž‘์—… ์ˆœ์„œ: ์ปค๋„์˜ Read IO ์ž‘์—…์ด ์„ ํ–‰๋˜๊ณ  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Read() ํ•จ์ˆ˜์˜ ๋‚˜๋จธ์ง€ ์ž‘์—…์ด ๋‚˜์ค‘์— ์ˆ˜ํ–‰๋œ๋‹ค.

๋…ผ๋ธ”๋กœํ‚น

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ปค๋„์—๊ฒŒ Read IO์ž‘์—…์„ ์š”์ฒญํ•˜๊ณ  ์ œ์–ด๊ถŒ์„ ๋„˜๊ธฐ์ง€๋งŒ, ์ปค๋„์€ ์ž‘์—… ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ์ œ์–ด๊ถŒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปค๋„์˜ Read IO ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


## ๐Ÿงฉ๋น„๋™๊ธฐ + ๋ธ”๋กœํ‚น (๋น„ํšจ์œจ)

์ž‘์—…์˜ ํ๋ฆ„์„ ๋น„๋™๊ธฐ๋กœ ์„ค๊ณ„ํ–ˆ์ง€๋งŒ, ๋ธ”๋กœํ‚น ๋•Œ๋ฌธ์— ๋™๊ธฐ + ๋ธ”๋กœํ‚น๊ณผ ๊ฐ™์€ ํ๋ฆ„์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

  1. ๋น„๋™๊ธฐ + ๋ธ”๋กœํ‚น ์€ ๊ฐ€์žฅ ๋น„ํšจ์œจ์ ์ธ ๋ชจ๋ธ๋กœ ์˜๋„์น˜ ์•Š๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
  2. ์ง๊ด€์ ์ธ ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ž‘์—…์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. (Linux/UnixS OS์˜ I/O ๋‹ค์ค‘ํ™” ๋ชจ๋ธ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค)
      1. ๋™๊ธฐ & ๋ธ”๋กํ‚น I/O์˜ ๊ฒฝ์šฐ ์ง๊ด€์ ์ด๋‚˜, ์—ฌ๋Ÿฌ ๊ฐœ์˜ I/O๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
      1. ๋…ผ๋ธ”๋กํ‚น I/O๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ž‘์—…์„ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฒƒ์ด ๊นŒ๋‹ค๋กญ๋‹ค. (๋Œ€๋ถ€๋ถ„ ์ด๋Ÿฐ ์ €๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋žจ์€ C๋กœ ์ง ๋‹ค. JS๋‚˜ Python ๊ฐ™์€ ๊ฑธ ์ƒ๊ฐํ•˜๋ฉด ์•ˆ๋œ๋‹ค.)
      1. ๊ทธ๋ ‡๋‹ค๊ณ  ๋™๊ธฐ & ๋ธ”๋กํ‚น I/O์™€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ์ด๋‚˜ ์“ฐ๋ ˆ๋”ฉ์„ ๊ฒฐํ•ฉํ•ด์„œ ์“ฐ์ž๋‹ˆ ์ž์› ๋ฌธ์ œ๋„ ์žˆ๊ณ  ํ”„๋กœ์„ธ์Šค/์“ฐ๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹ ์ด๋‚˜ ๋™๊ธฐํ™”๊ฐ€ ๋นก์…ˆ

๐Ÿ“Œ์˜ˆ์‹œ1

async-blocking.png

๋น„๋™๊ธฐ

๊ธฐ๋Šฅ A๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ŠฅB๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ฆ‰, ์ž‘์—…์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์—†๋‹ค.

๋ธ”๋กœํ‚น

์—”์ง€๋‹ˆ์–ดA๊ฐ€ ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰์„ ๋ฉˆ์ถ˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์—”์ง€๋‹ˆ์–ดB๋Š” ๊ธฐ๋ŠฅA์˜ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ธฐ๋ŠฅB๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†๋‹ค.


## ๐Ÿงฉ๋น„๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น (ํšจ์œจ)

์„ฑ๋Šฅ๊ณผ ์ž์›์˜ ํšจ์œจ๋ฉด์—์„œ ๊ฐ€์žฅ ์šฐ์ˆ˜ํ•˜์—ฌ ๋งŽ์ด ์“ฐ์ด๋Š” ์กฐํ•ฉ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.


๐Ÿ“Œ์˜ˆ์‹œ1

async-non-blocking.png

๋น„๋™๊ธฐ

๊ธฐ๋Šฅ A๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ŠฅB๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋…ผ๋ธ”๋กœํ‚น

์—”์ง€๋‹ˆ์–ด A,B๊ฐ€ ๊ธฐ๋Šฅ A,B๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ํ”„๋กœ์ ํŠธ๋Š” ๊ณ„์† ์ง„ํ–‰๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋ŠฅA๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋„์ค‘์— ์—”์ง€๋‹ˆ์–ดB๋Š” ๊ธฐ๋ŠฅB๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.



๐Ÿ“Œ์˜ˆ์‹œ2

image.png

๋น„๋™๊ธฐ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Read() ์ž‘์—…๊ณผ ์ปค๋„์˜ Read IO ์ž‘์—… ์ˆœ์„œ๊ฐ€ ๋”ฐ๋กœ ์ •ํ•ด์ง€์ง€ ์•Š๋Š”๋‹ค.

๋…ผ๋ธ”๋กœํ‚น

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ปค๋„์—๊ฒŒ Read IO์ž‘์—…์„ ์š”์ฒญํ•˜๊ณ  ์ œ์–ด๊ถŒ์„ ๋„˜๊ธฐ์ง€๋งŒ, ์ปค๋„์€ ์ž‘์—… ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ์ œ์–ด๊ถŒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปค๋„์˜ Read IO ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


## ์ •๋ฆฌ

Untitled


์ฐธ๊ณ 

Blocking, Non-blocking๊ณผ Sync, Async์— ๋Œ€ํ•˜์—ฌ

์šด์˜์ฒด์ œ-Synchronous์™€-Asynchronous-Blocking๊ณผ-Non-Blocking

๋™๊ธฐ/๋น„๋™๊ธฐ์™€ย ๋ธ”๋กœํ‚น/๋…ผ๋ธ”๋กœํ‚น

๋™๊ธฐ vs ๋น„๋™๊ธฐ, ๋ธ”๋กœํ‚น vs ๋…ผ๋ธ”๋กœํ‚น ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

https://cotak.tistory.com/136


๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ

๋น„๋™๊ธฐ, ๋™๊ธฐ, ๋ธ”๋กœํ‚น, ๋…ผ๋ธ”๋กœํ‚น์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

๋น„๋™๊ธฐ, ๋™๊ธฐ, ๋ธ”๋กœํ‚น, ๋…ผ๋ธ”๋กœํ‚น์˜ ๊ฐ ์กฐํ•ฉ์˜ ํŠน์ง•์„ ๋งํ•ด์ฃผ์„ธ์š”

์–ด๋–ค ์กฐํ•ฉ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? ๊ทธ ์ด์œ ๋Š”?

์–ด๋–ค ์กฐํ•ฉ์ด ๊ฐ€์žฅ ๋น„ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? ๊ทธ ์ด์œ ๋Š”?