Bibi's DevLog πŸ€“πŸŽ

λ™μ‹œμ„± Concurrency (+ 비동기 ν”„λ‘œκ·Έλž˜λ°, λ™μ‹œμ„±vs병렬성) λ³Έλ¬Έ

πŸ–₯ BE λ°±μ—”λ“œ

λ™μ‹œμ„± Concurrency (+ 비동기 ν”„λ‘œκ·Έλž˜λ°, λ™μ‹œμ„±vs병렬성)

λΉ„λΉ„ bibi 2021. 3. 20. 22:18

λ™μ‹œμ„± Concurrency (+ 병렬성)

좜처 : λΈ”λ‘œκ·Έ1, λΈ”λ‘œκ·Έ2

Q. μ—¬λŸ¬ μ‚¬μš©μžμ—κ²Œμ„œ μš”μ²­μ΄ λ™μ‹œμ— λ“€μ–΄μ˜¬ λ•Œ, ArrayListλŠ” μ–΄λ–»κ²Œ λ™μž‘ν•˜κ²Œ λ κΉŒμš”?

'λ™μ‹œμ—~ μ—¬λŸ¬~' κ°€ λ“±μž₯ν•˜λ©΄ λ™μ‹œμ„± 문제라고 μƒκ°ν•˜μ‹œλ©΄ 될 것 κ°™μ•„μš”.
λ‹¨μˆœν•œ ArrayListλŠ” λ™μ‹œμ„± λ¬Έμ œμ—μ„œ μ•ˆμ „ν•˜μ§€ λͺ»ν•œ μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€!

(μŠ€λ ˆλ“œ κ°œλ…κ³Ό 이어짐)

비동기 Asynchronous ν”„λ‘œκ·Έλž˜λ° - λ™μ‹œμ„±κ³Ό 병렬성

: μ½”λ“œ μ‹€ν–‰ κ²°κ³Όλ₯Ό 기닀리지 μ•Šκ³  λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 병렬 처리 방식. ν”„λ‘œκ·Έλž¨μ˜ μ£Ό μ‹€ν–‰ 흐름을 λ©ˆμΆ”μ–΄μ„œ κΈ°λ‹€λ¦¬λŠ” λΆ€λΆ„ 없이, λ°”λ‘œ λ‹€μŒ μž‘μ—…μ„ μ‹€ν–‰ν•  수 있게 함

  • λ™μ‹œμ„± Concurrency ν”„λ‘œκ·Έλž˜λ°

    : λ…Όλ¦¬μ μœΌλ‘œ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것. λ©€ν‹°νƒœμŠ€ν‚Ήμ„ μ—¬λŸ¬ μŠ€λ ˆλ“œλ₯Ό λ²ˆκ°ˆμ•„ κ°€λ©° μ‹€ν–‰λ˜λŠ” 방식.

    • μ‹±κΈ€μ½”μ–΄μ—μ„œ λ©€ν‹°μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€ν‚€ μœ„ν•œ 방식이닀.
  • 병렬성 Parallelism ν”„λ‘œκ·Έλž˜λ°

    : 물리적으둜 μ •ν™•νžˆ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 것.

    • λ©€ν‹° μ½”μ–΄μ—μ„œ λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” 방식.

    • 데이터 병렬성과 μž‘μ—… λ³‘λ ¬μ„±μœΌλ‘œ λ‚˜λ‰¨

λ™μ‹œμ„±κ³Ό λ³‘λ ¬μ„±μ˜ 차이

λ™μ‹œμ„±κ³Ό 병렬성 λͺ¨λ‘ λΉ„λ™κΈ°λ‘œ λ™μž‘μ„ κ΅¬ν˜„ν•  수 μžˆμ§€λ§Œ, λ‘˜μ˜ λ™μž‘μ›λ¦¬λŠ” λ‹€λ₯΄λ‹€

  • λ™μ‹œμ„±μ€ 논리적 κ°œλ…. μ‹±κΈ€ μ½”μ–΄, λ©€ν‹° μ½”μ–΄μ—μ„œ λͺ¨λ‘ λ™μž‘ κ°€λŠ₯ν•˜λ‹€.
    • n개둜 쀄을 μ„  μ†λ‹˜λ“€μ„ μ‘λŒ€ν•˜λŠ” 1λͺ…μ˜ 직원
  • 병렬성은 물리적 κ°œλ…. λ©€ν‹° μ½”μ–΄μ—μ„œλ§Œ λ™μž‘ κ°€λŠ₯ν•˜λ‹€.
    • n개둜 쀄을 μ„  μ†λ‹˜λ“€μ„ μ‘λŒ€ν•˜λŠ” nλͺ…μ˜ 직원

λ™μ‹œμ„±μ€ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ”κ²ƒ 처럼 λ³΄μ΄λŠ” 것이고, 병렬성은 μ‹€μ œλ‘œ λ™μ‹œμ— μ—¬λŸ¬ μž‘μ—…μ΄ μ²˜λ¦¬λ˜λŠ” 것이닀.

λ™μ‹œμ„±μ€ ν•œ λ²ˆμ— λ§Žμ€ 것을 μ²˜λ¦¬ν•œλ‹€λ©΄, 병렬성은 ν•œ λ²ˆμ— λ§Žμ€ 일을 μ²˜λ¦¬ν•˜λŠ” κ²ƒμž„

순차 λ™μ‹œμ„± 병렬성))