Bibi's DevLog ๐Ÿค“๐ŸŽ

[TIL - Codesquad] ๋™๊ธฐ&๋น„๋™๊ธฐ, ๋ธ”๋ก&๋…ผ๋ธ”๋ก, ์ฝœ๋ฐฑํ•จ์ˆ˜, ๋™์‹œ์„ฑ/๋ณ‘๋ ฌ์„ฑ, ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ๋ณธ๋ฌธ

TIL

[TIL - Codesquad] ๋™๊ธฐ&๋น„๋™๊ธฐ, ๋ธ”๋ก&๋…ผ๋ธ”๋ก, ์ฝœ๋ฐฑํ•จ์ˆ˜, ๋™์‹œ์„ฑ/๋ณ‘๋ ฌ์„ฑ, ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ

๋น„๋น„ bibi 2021. 1. 25. 23:53

[210125]

๋ฒŒ์จ CS10์˜ 7๋ฒˆ์งธ ๋ฏธ์…˜์ด๋ผ๋Š” ๊ฒŒ ์‹ ๊ธฐํ•˜๋‹ค. ๋ถ„๋ช… ํ•˜๋ฃจ๊ฐ€ ์ผ์ฃผ์ผ ๊ฐ™์•˜๋Š”๋ฐ ์ด์ œ ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๋‹ค๋‹ˆ:open_mouth:
์˜ค๋Š˜ ๋ฏธ์…˜๋„ ์–ด๋ ต์ง€๋งŒ, ์–ผํ• ๋ด๋„ ์ค‘์š”ํ•ด ๋ณด์—ฌ์„œ ์—ด์‹ฌํžˆ ๋ฐฐ์šฐ๊ณ  ์ตํ˜€์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ ๋ฏธ์…˜์„ ํ•˜๋ฉด์„œ ๊ณต๋ถ€๋งŒ ํ•˜๋‹ค๊ฐ€ ๋ฏธ์…˜์„ ๋‹ค ๋ชป ํ•œ ์ ์ด ๋งŽ์•„์„œ, ์ด๋ฒˆ์—๋Š” ์‹œ๊ฐ„์„ (๋Œ€์ถฉ) 1:1์ •๋„๋กœ ๋ถ„๋ฐฐํ•ด ๋ณด์•˜๋‹ค - ํ›จ์”ฌ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค!

ํ˜ธ๋ˆ…์Šค์˜ ๊ฐ„๋‹จ ๋ฏธ์…˜ ์„ค๋ช…

  • ์ด๋ฒˆ ๋ฏธ์…˜์˜ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ๋Š” ๋น„๋™๊ธฐ.
  • ์ž๋ฐ”๋Š”.. ''์ž๋ฐ” ๋น„๋™๊ธฐ''๋กœ ๊ฒ€์ƒ‰์„ ํ•ด์„œ ๋ญ”๊ฐ€ ๊ณ ๋ฅด๊ธฐ..
  • ๋™๊ธฐ&๋น„๋™๊ธฐ, ๋ธ”๋ก&๋…ผ๋ธ”๋ก์˜ ์ฐจ์ด๋Š”?
  • ๋™๊ธฐ-๋ธ”๋ก, ๋™๊ธฐ-๋…ผ๋ธ”๋ก, ๋น„๋™๊ธฐ-๋ธ”๋ก, ๋น„๋™๊ธฐ-๋…ผ๋ธ”๋ก ํŠน์ง• ์•Œ์•„๋ณด๊ธฐ.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ณผ์ œ๋ฅผ ๋น„๋™๊ธฐ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ.

(์˜ˆ์‹œ)
๋™๊ธฐ ์นดํŽ˜

  • ์ฃผ๋ฌธ์„ ํ•˜๋ฉด ์ปคํ”ผ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ทธ ์ž๋ฆฌ์—์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•จ

๋น„๋™๊ธฐ ์นดํŽ˜

  • ์ฃผ๋ฌธ์„ ํ•˜๊ณ  ๋‹ค๋ฅธ ์ผ์„ ์•„๋ฌด๊ฑฐ๋‚˜ ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ์ง„๋™๋ฒจ์ด ์šธ๋ฆฌ๋ฉด ๋ฐ›์œผ๋Ÿฌ ๊ฐ„๋‹ค.
  • ์ด๋ฒคํŠธ(=์ง„๋™๋ฒจ)๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ›์œผ๋Ÿฌ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์žˆ์œผ๋ฉด ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€? ํ•˜๊ณ  ์ปคํ”ผ๋ฅผ ๋ฐ›์œผ๋Ÿฌ ๊ฐ„๋‹ค.

TIL

๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

๋™๊ธฐ Synchronous

  • ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ž‘์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋œ๋‹ค.

์งœ์žฅ๋ฉด ๋ฐฐ๋‹ฌ๋ถ€๊ฐ€ ๋ฐฐ๋‹ฌ์„ ํ•  ๋•Œ,
์งœ์žฅ๋ฉด์„ ๋ฐฐ๋‹ฌํ•˜๊ณ  ์†๋‹˜์ด ๋‹ค ๋จน์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ๋‹ค์Œ
๊ทธ ๊ทธ๋ฆ‡์„ ์ˆ˜๊ฑฐํ•ด ๋‹ค์Œ ์žฅ์†Œ๋กœ ์ด๋™ํ•œ๋‹ค.

๋ฐฐ๋‹ฌ๋ถ€๋Š” ''๋ฐฐ๋‹ฌ-๊ทธ๋ฆ‡์ˆ˜๊ฑฐ-๋‹ค์Œ ๋ฐฐ๋‹ฌ'' ์ˆœ์„œ๋กœ ์ผํ•œ๋‹ค.
(๋‹จ์ ) ๋ฐฐ๋‹ฌํ•œ ๋’ค ์†๋‹˜์ด ์งœ์žฅ๋ฉด์„ ๋‹ค ๋จน์„ ๋•Œ๊นŒ์ง€ ๋ฐฐ๋‹ฌ๋ถ€๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.

๋น„๋™๊ธฐ Asynchronous

  • ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

์งœ์žฅ๋ฉด ๋ฐฐ๋‹ฌ๋ถ€๋Š” ์†๋‹˜์—๊ฒŒ ์งœ์žฅ๋ฉด์„ ๋ฐฐ๋‹ฌํ•˜๊ณ , ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ฐฐ๋‹ฌ์„ ์ฒ˜๋ฆฌํ•˜๋Ÿฌ ๊ฐ„๋‹ค.
์†๋‹˜์ด ์งœ์žฅ๋ฉด์„ ๋‹ค ๋จน๊ณ  ๋‚˜๋ฉด ์ฒ˜๋ฆฌํ•  ์ผ(๊ทธ๋ฆ‡ ์ˆ˜๊ฑฐ)๋งŒ ๋“ฑ๋กํ•ด ๋‘”๋‹ค.

์งœ์žฅ๋ฉด์„ ๋จน๋Š” ๊ฒƒ์€ ์†๋‹˜์˜ ์ผ / ๋ฐฐ๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ๋ฐฐ๋‹ฌ๋ถ€์˜ ์ผ.
์ฆ‰ ์„œ๋กœ ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ์—์„œ ์ด๋ค„์ง€๋Š” ์ผ์ด๋‹ค.

์ฝœ๋ฐฑ ํ•จ์ˆ˜ callback function

  • (๋น„๋™๊ธฐ๋กœ) ์ผ์„ ๋งˆ์นœ ๋’ค ์‹คํ–‰ํ•  ๋‹ค์Œ ์—…๋ฌด๋ฅผ ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•ด ๋†“๋Š” ๊ฒƒ.

์†๋‹˜์ด ์งœ์žฅ๋ฉด์„ ๋‹ค ๋จน์€ ๋’ค '๋‹ค ๋จน์—ˆ๋‹ค'๊ณ  ๋ฐฐ๋‹ฌ๋ถ€์—๊ฒŒ ์•Œ๋ ค์ฃผ๋ฉด,
๋ฐฐ๋‹ฌ๋ถ€๊ฐ€ ์™€์„œ ๊ทธ๋ฆ‡ ์ˆ˜๊ฑฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋™๊ธฐ(์‹ฑํฌ)&๋น„๋™๊ธฐ(์–ด์‹ฑํฌ), ๋ธ”๋ก&๋…ผ๋ธ”๋ก

์ž๋ฐ”๋Š” ๋™๊ธฐ, ๋ธ”๋ก ๊ธฐ๋ฐ˜ ์–ธ์–ด์ด๋‹ค.
๋ฐ˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋น„๋™๊ธฐ, ๋…ผ๋ธ”๋ก ๊ธฐ๋ฐ˜ ์–ธ์–ด์ด๋‹ค.

๋ธ”๋ก, ๋…ผ๋ธ”๋ก

public void A() { // ํ˜ธ์ถœ์ž
    a();
    // A's codes
}

public void a() {
    // a's codes   
}
  • ๋ธ”๋ก
    ํ˜ธ์ถœ์ž A๊ฐ€ a์˜ ๋ฆฌํ„ด๊ฐ’ ์—†์ด๋Š” A ์ž์‹ ์˜ ์ผ์„ ๊ณ„์†ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ง‰๋Š” ๊ฒƒ(block).
    ์ฆ‰ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ a์˜ ๋ฆฌํ„ด๊ฐ’์ด ์žˆ์–ด์•ผ๋งŒ ํ˜ธ์ถœ์ž A์˜ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋…ผ๋ธ”๋ก
    ํ˜ธ์ถœ์ž A๊ฐ€ a์˜ ๋ฆฌํ„ด๊ฐ’ ์—†์ด๋„ A ์ž์‹ ์˜ ์ผ์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ง‰์ง€ ์•Š๋Š” ๊ฒƒ(non-block).
    ์ฆ‰ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ a์˜ ๋ฆฌํ„ด๊ฐ’์ด ์—†์–ด๋„ ํ˜ธ์ถœ์ž A์˜ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    (๋ณดํ†ต a๋Š” ๋ณ„๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด / ๋‹จ์ผ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ถ„ํ• ํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค)

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

  • syn ์€ 'ํ•จ๊ป˜', chrono๋Š” '์‹œ๊ฐ„'์ด๋ผ๋Š” ๋œป์ด๋‹ค.
    synchronous ๋™๊ธฐ(๋™๊ธฐํ™”) = ์‹œ๊ฐ„์ด ์ผ์น˜ํ•˜๋Š” ๊ฒƒ.
    ''๋‘ ๋Œ€์ƒ์˜ ์‹œ๊ฐ„์ด ์ผ์น˜ํ•ด์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฐ€''
    • ํ•จ์ˆ˜A์˜ ๋๊ณผ ํ•จ์ˆ˜B์˜ ์‹œ์ž‘์ด ๋™์ผํ•˜๋‹ค.
    • ์ œ์–ด๊ถŒ ๋ฐ˜ํ™˜&๊ฒฐ๊ณผ๊ฐ’ ์ „๋‹ฌ์˜ ์‹œ์ž‘๊ณผ ๋์ด ๋™์ผํ•˜๋‹ค.
  • a๋Š” ๋ถ€์ •ํ˜• ์ ‘๋ฏธ์‚ฌ์ด๋‹ค.
    asynchronous ๋น„๋™๊ธฐ = ์‹œ๊ฐ„์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ.
    ''๋‘ ๋Œ€์ƒ์˜ ์‹œ๊ฐ„์ด ์ผ์น˜ํ•˜์ง€ ์•Š์•„ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฐ€''
    • ํ•จ์ˆ˜A์˜ ๋๊ณผ ํ•จ์ˆ˜B์˜ ์‹œ์ž‘์ด ๋™์ผํ•˜์ง€ ์•Š๋‹ค.
    • ์ œ์–ด๊ถŒ ๋ฐ˜ํ™˜&๊ฒฐ๊ณผ๊ฐ’ ์ „๋‹ฌ์˜ ์‹œ์ž‘๊ณผ ๋์ด ๋™์ผํ•˜์ง€ ์•Š๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ธ”๋ก == ๋™๊ธฐ, ๋…ผ๋ธ”๋ก == ๋น„๋™๊ธฐ ์•„๋‹Œ๊ฐ€?

๋น„์Šทํ•œ ๋ฉด์ด ๋งŽ๊ธด ํ•˜์ง€๋งŒ, ๋‘˜์€ ๊ด€์ ์ด ๋‹ค๋ฅด๋‹ค.

  • ๋ธ”๋ก/๋…ผ๋ธ”๋ก์€ '์ œ์–ด๊ถŒ' ๊ด€์ ,
    • ๋ธ”๋ก : ๋ฉ”์†Œ๋“œ์˜ ์ œ์–ด๊ถŒ์„ ํ•œ ์‹œ์ ์— ํ•œ ๊ณณ์—์„œ๋งŒ ๊ฐ€์ง.
      (ํ”„๋กœ์„ธ์Šค ์ž‘์—…์ด ํ•œ ๋ฒˆ์— ํ•œ ๊ณณ์—์„œ๋งŒ ์ด๋ฃจ์–ด์ง.)
    • ๋…ผ๋ธ”๋ก : ๋ฉ”์†Œ๋“œ์˜ ์ œ์–ด๊ถŒ์„ ํ•œ ์‹œ์ ์— ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ.
      (ํ”„๋กœ์„ธ์Šค ์ž‘์—…์ด ํ•œ ์‹œ์ ์— ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์ด๋ฃจ์–ด์ง.)
  • ๋™๊ธฐ/๋น„๋™๊ธฐ๋Š” '(์ œ์–ด๊ถŒ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”) ์‹œ๊ฐ„' ๊ด€์ ์ด๋‹ค.
    • ๋™๊ธฐ : ์ œ์–ด๊ถŒ ๋ฐ˜ํ™˜๊ณผ ๊ฒฐ๊ณผ๊ฐ’ ์ „๋‹ฌ์˜ ์‹œ์ ์ด ๊ฐ™์Œ.
    • ๋น„๋™๊ธฐ : ์ œ์–ด๊ถŒ ๋ฐ˜ํ™˜๊ณผ ๊ฒฐ๊ณผ๊ฐ’ ์ „๋‹ฌ์˜ ์‹œ์ ์ด ๋‹ค๋ฆ„.

๋™๊ธฐ-๋…ผ๋ธ”๋ก์˜ ์˜ˆ์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”๊ฐ€?

๋…ผ๋ธ”๋ก ์ƒํƒœ์—์„œ์˜ ๊ฒฐ๊ณผ๊ฐ’์ด '๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ๋ฆฌํ„ด๊ฐ’'์ด ์•„๋‹ ๋•Œ.

ํ˜ธ์ถœ์žA์— ์˜ํ•ด ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜a๊ฐ€ ์ž‘์—…์„ ํ•˜๋‹ค๊ฐ€, ์ž‘์—… ๋„์ค‘์— ์ œ์–ด๊ถŒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์ด ๋•Œ ์ž‘์—…์€ ๋๋‚˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋ฆฌํ„ด๊ฐ’์€ ์•„์ง ์—†๋‹ค.
์ฆ‰ "์ž‘์—… ์™„๋ฃŒ๋˜์ง€ ์•Š์Œ"์ด๋ผ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ฉฐ ์ œ์–ด๊ถŒ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
โ†’ ์ œ์–ด๊ถŒ ๋ฐ˜ํ™˜๊ณผ ๊ฒฐ๊ณผ๊ฐ’ ์ „๋‹ฌ์ด ๋™์‹œ์— ์ด๋ฃจ์–ด์ง : ๋™๊ธฐ.
โ†’ ์ž‘์—…์ด ๋๋‚˜์ง€ ์•Š์•˜๋Š”๋ฐ ๋ฐ˜ํ™˜ํ–ˆ์Œ : ๋…ผ๋ธ”๋Ÿญ

์ด๋Ÿฐ ๊ฒฝ์šฐ, ํ˜ธ์ถœ์žA๋Š” ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜a๋ฅผ ๊ณ„์† ํ˜ธ์ถœํ•˜๋ฉฐ a์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
a์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด ๊ฒฐ๊ณผ๊ฐ’์ด ๋ฆฌํ„ด๋˜๋ฉด, ๋ฆฌํ„ด๊ฐ’์„ ๊ฐ€์ง€๊ณ  ํ˜ธ์ถœ์žA์˜ ๋‹ค์Œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฐ” Future ํ•จ์ˆ˜๊ฐ€ ์ด๋Ÿฐ ์˜ˆ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜..

๋ชจ๋“  ๋Œ€์ƒ์— ๋Œ€ํ•ด ๋™๊ธฐ-๋ธ”๋ก, ๋™๊ธฐ-๋…ผ๋ธ”๋ก, ๋น„๋™๊ธฐ-๋ธ”๋ก, ๋น„๋™๊ธฐ-๋…ผ๋ธ”๋ก ์„ ๋šœ๋ ทํ•˜๊ฒŒ ๋‚˜๋ˆ„๊ธฐ๋Š” ํž˜๋“ค๋‹ค.
์ฝ”๋“œ์˜ ๊ฐ ๋ถ€๋ถ„๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋ธ”๋ก/๋™๊ธฐ/๋…ผ๋ธ”๋ก/๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.

๊ทธ๋ƒฅ ๋ธ”๋ก&๋…ผ๋ธ”๋ก, ๋™๊ธฐ&๋น„๋™๊ธฐ ๋ผ๋Š” ๊ฐœ๋…์„ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.


ํ”„๋กœ์„ธ์Šค&์Šค๋ ˆ๋“œ, ๋™์‹œ์„ฑ&๋ณ‘๋ ฌ์„ฑ

ํ”„๋กœ์„ธ์Šค

: ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ. (ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์ƒํƒœ)

๋ฉ€ํ‹ฐํƒœ์Šคํ‚น multitasking

: ์ปดํ“จํ„ฐ๊ฐ€ ํ”„๋กœ์„ธ์Šค ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ.
์šด์˜์ฒด์ œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•ด ์ฃผ๊ธฐ ๋–„๋ฌธ์— ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋™์‹œ์„ฑ, ๋ณ‘๋ ฌ์„ฑ

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•จ๊ป˜ ๋Œ๋ฆฌ๋Š” ์ž‘์—…์€ ๋™์‹œ์  / ๋ณ‘๋ ฌ์  / ๋‘˜์˜ ํ˜ผํ•ฉ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

  • ๋™์‹œ์„ฑ concurrency(๋™์‹œ ์‹คํ–‰)
    : ํ”„๋กœ์„ธ์„œ ํ•˜๋‚˜๊ฐ€ ํ”„๋กœ์„ธ์Šค A, B, C, D ๋ฅผ ์ „ํ™˜ํ•˜๋ฉฐ ์กฐ๊ธˆ์”ฉ, ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹

    • context switching(๋ฌธ๋งฅ ๊ตํ™˜) : ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ.

    ์ปดํ“จํ„ฐ๊ฐ€ ํ”„๋กœ์„ธ์Šค ์ „ํ™˜(context switching)์„ ์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ ์†๋„๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
    ํ”„๋กœ์„ธ์Šค๋“ค์€ ์‹ค์ œ๋กœ ๋™์‹œ์— ์‹คํ–‰๋˜์ง€ ์•Š์ง€๋งŒ
    ์‚ฌ๋žŒ๋“ค์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด '๋™์‹œ์—' ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‹ค๊ณ  ๋Š๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

  • ๋ณ‘๋ ฌ์„ฑ parallelism
    : ํ”„๋กœ์„ธ์„œ ํ•˜๋‚˜์— ์ฝ”์–ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ , ๊ฐ ์ฝ”์–ด๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹.
    ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๊ฐ€ ์žˆ๋Š” ์ปดํ“จํ„ฐ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค (๋“€์–ผ์ฝ”์–ด, ์ฟผ๋“œ์ฝ”์–ด .. )
    (CPU์˜ ๋ฐœ์ „์— ํ•œ๊ณ„(๋ฐœ์—ด ๋“ฑ)๊ฐ€ ์ƒ๊ธฐ์ž, ์ฝ”์–ด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‹ฌ์•„์„œ ์ž‘์—…์„ ๋ถ„๋‹ดํ•˜๋„๋ก ํ–ˆ๋‹ค.)

์Šค๋ ˆ๋“œ thread

ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ๋„ ์—ฌ๋Ÿฌ ์ž‘์—…์ด ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๋‹ค.
: ํ”„๋กœ์„ธ์Šค ๋‚ด์˜ (์—ฌ๋Ÿฌ ์ž‘์—…์˜) ์‹คํ–‰๋‹จ์œ„๋ฅผ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €๋ผ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ,
์›น์„œํ•‘๋„ ํ•ด์•ผ ํ•˜๊ณ 
๊ฒŒ์ž„ ๋‹ค์šด๋กœ๋“œ๋„ ๋ฐ›์•„์•ผ ํ•˜๊ณ 
์œ ํŠœ๋ธŒ ์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด์„œ ๋™์‹œ์— ์‹คํ–‰(์žฌ์ƒ)ํ•ด์•ผ ํ•œ๋‹ค.

์Šค๋ ˆ๋“œ์˜..

  • (์žฅ์ ) ์†๋„, ํšจ์œจ ๋ฉด์—์„œ ์ข‹๋‹ค.

  • (๋‹จ์ ) ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

    ์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ ์˜ˆ์ธก, ๋ฐฉ์ง€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ฐœ๋ฐœ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊นŒ๋‹ค๋กญ๋‹ค.
    -> ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ๋„๊ตฌ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋„ ๋ฐœ์ „ํ–ˆ๋‹ค(๋žŒ๋‹ค, ํ•จ์ˆ˜ํ˜•ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ํด๋กœ์ € ..)

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ์˜ ์ฐจ์ด

ํ”„๋กœ์„ธ์Šค๋Š” ์ปดํ“จํ„ฐ์˜ ์ž์› (๋ฉ”๋ชจ๋ฆฌ ๋“ฑ)์„ ๋ถ„ํ• ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
๋ฐ˜๋ฉด ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์— ์ฃผ์–ด์ง„ ์ž์› ์ „์ฒด๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.


1/25 ์˜ค๋Š˜์˜ ์˜๋‹จ์–ด

concurrency (n) (์ปดํ“จํ„ฐ) ๋™์‹œ ์‹คํ–‰. ๋™์‹œ์„ฑ.

concur (v) ๋™์˜ํ•˜๋‹ค. ์˜๊ฒฌ์ด ์ผ์น˜ํ•˜๋‹ค.

parallelism (n) (์ปดํ“จํ„ฐ)๋ณ‘๋ ฌ์„ฑ / ์œ ์‚ฌ์„ฑ.

parallel (a) ํ‰ํ–‰ํ•œ / ์œ ์‚ฌํ•œ.

synchronous (a) ๋™๊ธฐ์˜. ๋™์‹œ์— ๋ฐœ์ƒ/์กด์žฌํ•˜๋Š”.

asynchronous (a) ๋น„๋™๊ธฐ์˜. ๋™์‹œ์— ๋ฐœ์ƒ/์กด์žฌํ•˜์ง€ ์•Š๋Š”.

callback (n) ํšŒ์‹ . ์ฝœ๋ฐฑ.

call back (v) ๋‹ค์‹œ ์ „ํ™”๋ฅผ ํ•˜๋‹ค / ๋‹ค์‹œ ๋ถ€๋ฅด๋‹ค.