1. Blocking/Non-Blocking, Synchronous/Asynchronous

๋ชฉ์ฐจ

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ, ๋ธ”๋กœํ‚น๊ณผ ๋…ผ๋ธ”๋กœํ‚น์˜ ์ฐจ์ด๋ฅผ I/O์™€ ํ•จ๊ป˜ ์•Œ์•„๋ณด์ž. ์œ ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์„œ ์˜ˆ์‹œ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

Blocking๊ณผ Non-Blocking

๐ŸŒŸ Aโ†’ B์—๊ฒŒ ์ผ์„ ์‹œ์ผฐ์„ ๋•Œ, ํ˜ธ์ถœํ•œ ์ชฝ(A)์ด ๊ณ„์† ์ผ์„ ํ•˜๋‚˜? ์•„๋‹ˆ๋ฉด ๊ธฐ๋‹ค๋ฆฌ๋‚˜? 

   โ‡’ A์˜ ์ œ์–ด๊ถŒ์„ ๋ˆ„๊ฐ€ ๊ฐ€์ง€๋Š” ์ง€
  • ๋งŒ์•ฝ A๊ฐ€ B๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ (์ผ์„ ์‹œ์ผฐ์„ ๊ฒฝ์šฐ)

    • Non-Blocking : A๊ฐ€ B์—๊ฒŒ ์ผ์„ ์‹œํ‚ค๊ณ , ๋ฐ”๋กœ ์ž๊ธฐ ์›๋ž˜ ํ•˜๋˜ ์ผ์„ ๊ณ„์† ํ•œ๋‹ค.

    • Blocking : A๋Š” B๊ฐ€ ์ผ์„ ๋‹ค ํ•  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. B ์ž‘์—…์ด ๋‹ค ๋๋‚˜์•ผ A๋Š” ์ž๊ธฐ ํ• ์ผ์„ ๋งˆ์ € ํ•œ๋‹ค.

๋‹ค์Œ์€ ์œ ์ € ํ”„๋กœ์„ธ์Šค ์ง„ํ–‰์ค‘, I/O ์ž‘์—…์ด ํ˜ธ์ถœ๋˜์—ˆ์„ ๊ฒฝ์šฐ์˜ ๊ทธ๋ฆผ์ด๋‹ค. ์ด๋•Œ ์œ ์ € ํ”„๋กœ์„ธ์Šค๋Š” ์ž์‹ ์˜ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ๋Œ€๊ธฐํ•˜๋Š”๊ฐ€? ์•„๋‹ˆ๋ฉด ๊ณ„์† ์ง„ํ–‰ํ•˜๋Š” ๊ฐ€โ”

  • Non-Blocking : ์œ ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O๋ฅผ ์‹œํ‚ค๊ณ  ์ž์‹ ์˜ ์ผ์„ ๊ณ„์† ํ•œ๋‹ค.

  • Blocking : ์œ ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ I/O ์ž‘์—…์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ์ค‘๋‹จํ•œ๋‹ค.

Synchronous์™€ Asynchronous

๐ŸŒŸ Aโ†’ B์—๊ฒŒ ์ผ์„ ์‹œ์ผฐ์„ ๋•Œ, ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ˆ„๊ฐ€ ์•Œ๋ ค์ฃผ๋Š”๊ฐ€? 

   โ‡’ B์˜ ๊ฒฐ๊ณผ๊ฐ’ ์ฒ˜๋ฆฌ๋ฅผ ๋ˆ„๊ฐ€ ํ•˜๋Š”๊ฐ€?
  • ๋งŒ์•ฝ 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

์œ„๋กœ๊ฐ€๊ธฐโฌ†

Last updated