๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
5๏ธโƒฃ CS/Network

[Network] Sync/Async์™€ Blocking/Non-blocking

by seolhee2750 2022. 10. 21.

Blocking/Non-blocking๊ณผ Sync/Async๋Š” ๋น„์Šทํ•˜๊ฒŒ ๋ณด์ด์ง€๋งŒ, ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค.

๊ต‰์žฅํžˆ ํ—ท๊ฐˆ๋ ค์„œ,,!! ๋‘˜์„ ์ •ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ •๋ฆฌํ•ด๋ณด๋ คํ•œ๋‹ค.

 

๐Ÿ“Ž ๊ฐœ๋… ๋น„๊ต

Sync/Async์™€ Blocking/Non-blocking์€ ๋ชจ๋‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ์šด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

Sync/Async

"ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰ ์ˆœ์„œ ๋ณด์žฅ์— ๋Œ€ํ•œ ๋งค์ปค๋‹ˆ์ฆ˜"

  • Sync : ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ์— ๋งž๊ฒŒ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ
  • Async : ํ•˜๋‚˜์˜ ์š”์ฒญ์ด ๋๋‚˜๊ธฐ๋„ ์ „์—, ๋‹ค๋ฅธ ์š”์ฒญ๋“ค์„ ๋™์‹œ์— ์ฒ˜๋ฆฌ

 

Blocking/Non-Blocking

"ํ”„๋กœ์„ธ์Šค์˜ ์œ ํœด ์ƒํƒœ์— ๋Œ€ํ•œ ๊ฐœ๋…"

  • Blocking : ๋‹ค๋ฅธ ์ฃผ์ฒด์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ž์‹ ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰
  • Non-Blocking : ๋‹ค๋ฅธ ์ฃผ์ฒด์˜ ์ž‘์—…์— ๊ด€๋ จ ์—†์ด ์ž์‹ ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰

(Blocking/Non-Blocking์˜ ๊ฒฝ์šฐ ๋ณดํ†ต IO์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.)


๐Ÿ“Ž ๋™์ž‘ ๋น„๊ต

Sync/Async์™€ Blocking/Non-blocking์— ๋Œ€ํ•œ ๋™์ž‘ ๋น„๊ต๋Š”

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Thread1์—์„œ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค์ด ์‹คํ–‰์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ์—์„œ, Thread2๋กœ ์ฒซ ๋ฒˆ์งธ ํ•จ์ˆ˜๋ฅผ ๋‚˜๋ˆˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์—ฌ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

 

๐Ÿ“ Sync

ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ ๋ฐ ์ข…๋ฃŒ๋ฅผ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜ ๋ฐ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ์‹ ๊ฒฝ์“ด๋‹ค.

  • Thread1์ด ์ž‘์—…์„ ์‹œ์ž‘์‹œํ‚ค๊ณ , ํ•จ์ˆ˜1์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ํ•จ์ˆ˜2๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.
  • ์ž‘์—… ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ์˜ ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๊ฐ’(return)์„ ์ง์ ‘ ๋ฐ›๋Š”๋‹ค.
  • ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜ ๋ฐ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜ ๋ชจ๋‘ ์ž‘์—…์˜ ์™„๋ฃŒ๋ฅผ ์‹ ๊ฒฝ์“ด๋‹ค. (์ฃผ๊ธฐ์ ์œผ๋กœ ๊ณ„์† ๋ฌผ์–ด๋ณธ๋‹ค.)

 

๐Ÿ“ Async

ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ ๋ฐ ์ข…๋ฃŒ๋ฅผ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜ ํ˜ผ์ž ์ง์ ‘ ์‹ ๊ฒฝ์“ฐ๊ณ , ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • Thread1์ด ์ž‘์—…์„ ์‹œ์ž‘์‹œํ‚ค๊ณ (Callback ํ•จ์ˆ˜๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌ), ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  Thread1์€ ๋‹ค๋ฅธ ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ์ž‘์—… ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๊ฐ’(return)์„ ๊ฐ„์ ‘์ ์œผ๋กœ ๋ฐ›๋Š”๋‹ค.
  • ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๊ฐ’์ด return๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜1 ํ˜ผ์ž ์ž‘์—… ์™„๋ฃŒ๋ฅผ ์‹ ๊ฒฝ์“ด๋‹ค. (์ž‘์—… ์™„๋ฃŒ ์‹œ Callback ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๊ฐ’์„ ์ „๋‹ฌ)

 

๐Ÿ“ Blocking

ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์ด ํ•  ์ผ์„ ๋ชจ๋‘ ๋งˆ์น  ๋•Œ๊นŒ์ง€ ์ œ์–ด๊ถŒ์„ ๊ฐ€์ง€๋ฉฐ, ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์—๊ฒŒ ๋ฐ”๋กœ ๋Œ๋ ค์ฃผ์ง€ ์•Š๋Š”๋‹ค.

  • ํ•จ์ˆ˜1์ด ์žˆ๋˜ ์ž๋ฆฌ๋ฅผ blocking ํ•ด๋†“๊ณ (์ผ์„ ๋ชปํ•˜๊ฒŒ ๋ง‰์Œ), ํ•จ์ˆ˜1์ด ์ž‘์—…์„ ๋งˆ์น  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
  • ํ•จ์ˆ˜1์˜ return ๊ฐ’์„ ๋ฐ›์•„์•ผ ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜1์ด returnํ•  ๋•Œ๊นŒ์ง€ Thread1์€ ๊ณ„์† ์‚ฌ์šฉ/๋Œ€๊ธฐ๋œ๋‹ค.

 

๐Ÿ“ Non-blocking

ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์ด ํ•  ์ผ์„ ๋งˆ์น˜์ง€ ์•Š์•˜๋”๋ผ๋„ ๋ฐ”๋กœ ์ œ์–ด๊ถŒ์„ ๊ฑด๋„ค์ฃผ์–ด(return) ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์ผ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

  • ์š”์ฒญํ•œ ์ž‘์—…์„ ์ฆ‰์‹œ ๋งˆ์น  ์ˆ˜ ์—†๋‹ค๋ฉด, ๋ฐ”๋กœ returnํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ Thread๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ IO๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœจ Sync/Async์™€ Blocking/Non-blocking์˜ ํ•ต์‹ฌ ์ฐจ์ด์ 

์œ„์˜ ๋™์ž‘ ๋น„๊ต์—์„œ Sync๋Š” Blocking๊ณผ ๋น„์Šทํ•˜๊ณ , Async๋Š” Non-blocking๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณด์ธ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋“ค์€ ๋ช…ํ™•ํžˆ ๋‹ค๋ฅธ ๊ฐœ๋…์œผ๋กœ, ๊ด€์ ์˜ ์ฐจ์ด๋กœ ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • Sync/Async๋Š” "์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์‹ ๊ฒฝ์“ฐ๋Š”์ง€"์˜ ๊ด€์ ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • Blocking/Non-blocking์€ "์ œ์–ด๊ถŒ์ด ์–ด๋””์žˆ๋Š”์ง€"์˜ ๊ด€์ ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Ž ๋‘˜์˜ ์กฐํ•ฉ

Sync/Async์™€ Blocking/Non-Blocking์€ ์กฐํ•ฉํ•˜์—ฌ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ,

๋„ˆ๋ฌด๋‚˜๋„ ์ž˜ ์ •๋ฆฌ๋œ ๊ทธ๋ฆผ์ด ์žˆ์–ด์„œ ๊ฐ€์ ธ์™”๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Sync์™€ Blocking, ๊ทธ๋ฆฌ๊ณ  Async์™€ Non-Blocking์„ ์กฐํ•ฉํ•˜์—ฌ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉฐ,

ASync์™€ Blocking ์กฐํ•ฉ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์˜๋ฏธ๋ฅผ ์ฐพ๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.


๐ŸŒŸ ์ •๋ฆฌ

Sync/Async์™€ Blocking/Non-blocking์€ ๋ชจ๋‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ์šด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๊ฐ™์€ ๊ฐœ๋…์€ ์•„๋‹ˆ๋‹ค.

Sync/Async๋Š” ์ˆœ์„œ์™€ ๊ฒฐ๊ณผ๊ฐ€ ์ค‘์š”ํ•˜๋ฉฐ, ๋ˆ„๊ฐ€ ์‹ ๊ฒฝ์“ฐ๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๊ด€์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Blocking/Non-blocking์€ ์ œ์–ด๊ถŒ์„ ๋ˆ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๊ด€์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Sync์™€ Blocking, ๊ทธ๋ฆฌ๊ณ  Async์™€ Non-blocking ์กฐํ•ฉ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.


์ฐธ๊ณ 

'5๏ธโƒฃ CS > Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Network] SSL/TLS  (0) 2022.10.13
[Network] TCP์˜ 3-Way HandShake์™€ 4-Way HandShake  (0) 2022.10.13

๋Œ“๊ธ€