π λ€λ₯Έ μ£Όμ²΄κ° μμ
ν λ "μμ μ μ μ΄κΆ"μ΄ μλμ§ μλμ§λ‘ ꡬλΆνλ€.
π νΈμΆλλ ν¨μκ° λ°λ‘ 리ν΄νλλ λ§λλλ‘ κ΅¬λΆνλ€.
βBlocking
μμ μ μμ μ μ§ννλ€κ° λ€λ₯Έ 주체μ μμ μ΄ μμλλ©΄ λ€λ₯Έ μμ μ΄ λλ λκΉμ§ κΈ°λ€λ Έλ€κ° μμ μ μμ μ μμνλ κ²
νΈμΆλ ν¨μ
κ° μμ μ μμ μ λͺ¨λ λ§μΉ λκΉμ§νΈμΆν ν¨μ
μκ² μ μ΄κΆμ λκ²¨μ£Όμ§ μκ³ λκΈ°νκ² λ§λ λ€νΈμΆλλ ν¨μ
κ° λ°λ‘ 리ν΄νμ§ μμΌλ©΄ Blocking
π μμ
μ¬μ | Blocking μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€ | Blocking μμ¬λ μλ₯λ₯Ό λ€ μ½λ λμ μ¬μμκ² κΈ°λ€λ¦¬λΌκ³ νλ€ |
μμ¬κ° μλ₯λ₯Ό λ€ μ½κ³ κ²°κ³Όλ₯Ό μ£Όλ©΄ κ·Έμ μμΌ μ μλ¦¬λ‘ κ° μ μλ€ |
βNon-Blocking
λ€λ₯Έ 주체μ μμ μ κ΄λ ¨μμ΄ μμ μ μμ μ νλ κ²
νΈμΆλ ν¨μ
κ° λ°λ‘ returnν΄μνΈμΆν ν¨μ
μκ² μ μ΄κΆμ λ겨주κ³νΈμΆν ν¨μ
κ° λ€λ₯Έ μΌμ ν μ μλ κΈ°νλ₯Ό μ€λ€νΈμΆλλ ν¨μ
κ° λ°λ‘ 리ν΄νλ©΄ Non-Blocking
π μμ
μ¬μ | Non-Blocking μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€ | Non-Blocking μμ¬λ μλ₯λ₯Ό μ½μ΄λ³Όν λ μ¬μμκ² μλ¦¬λ‘ λμκ°λΌκ³ νλ€ |
μ¬μμ μλ¦¬λ‘ λμμ μμ μ μΌμ νλ€ | μ¬μμ΄ μΌμ νλ λμ μμ¬λ μλ₯λ₯Ό μ½λλ€ |
π κ²°κ³Όλ₯Ό λλ €μ£Όμμ λ "μμμ κ²°κ³Ό(μ²λ¦¬)μ κ΄μ¬"μ΄ μλμ§ μλμ§λ‘ ꡬλΆνλ€.
π νΈμΆλλ ν¨μμ μμ
μλ£ μ¬λΆλ‘ ꡬλΆνλ€.
βSynchronous
μμ μ λμμ μννκ±°λ, λμμ λλκ±°λ, λλλ λμμ μμν¨μ μλ―Ένλ€.
νΈμΆνλ ν¨μ
κ°νΈμΆλλ ν¨μ
μ μμ μλ£ ν returnμ κΈ°λ€λ¦¬κ±°λ,νΈμΆλλ ν¨μ
λ‘λΆν° λ°λ‘ return λ°λλΌλ μμ μλ£ μ¬λΆλ₯Ό νΈμΆν ν¨μ μ€μ€λ‘ νμΈνλ©° μ κ²½ μ΄λ€νΈμΆλλ ν¨μ
μ μμ μλ£λ₯Ό νΈμΆν ν¨μκ° μ κ²½μ°λ©΄ Synchronous
π μμ
μ¬μ | Synchronous μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€ | Synchronous μμ¬λ μλ₯λ₯Ό λ€ μ½λ λμ μ¬μμ΄ κΈ°λ€λ¦¬λμ§, λ€λ₯Έ μΌμ νλμ§ μ κ²½μ°μ§ μλλ€ |
μμ¬κ° μλ₯λ₯Ό λ€ μ½κ³ κ²°κ³Όλ₯Ό μ£Όλ©΄ λ°λ‘ μ²λ¦¬νλ€ |
βAsynchronous
μμ μ μμκ³Ό μ’ λ£κ° μΌμΉνμ§ μμΌλ©°, λλλ λμμ μμ νμ§ μμμ μλ―Ένλ€.
νΈμΆλλ ν¨μ
μκ² callbackμ μ λ¬ν΄μνΈμΆλλ ν¨μ
μ μμ μ΄ μλ£λλ©΄νΈμΆλλ ν¨μ
κ° μ λ¬λ°μ callbackμ μ€ννκ³ ,νΈμΆν ν¨μ
λ μμ μλ£ μ¬λΆλ₯Ό μ κ²½μ°μ§ μλλ€- μμ μλ£ ν λ°μ κ²°κ³Όμ λν΄ μ²λ¦¬ν μλ μκ³ , μ ν μλ μλ€
νΈμΆλλ ν¨μ
μ μμ μλ£λ₯Ό νΈμΆλ ν¨μκ° μ κ²½μ°λ©΄ Asynchronous
π μμ
μ¬μ | Asynchronous μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€. | Asynchronous μμ¬λ μλ₯λ₯Ό λ€ μ½λ λμ μ¬μμ΄ κΈ°λ€λ¦¬λμ§, λ€λ₯Έ μΌμ νλμ§ μ κ²½μ°μ§ μλλ€. μλ₯λ₯Ό λ€ μ½μ ν κ²°κ³Όλ₯Ό λμ€μ νμΈνλΌκ³ λ©μΌλ‘ 보λ΄μ€λ€. |
μ¬μμ λμ€μ λ©μΌμ νμΈνκ³ μΈμ κ° μ²λ¦¬νλ€. |
Blocking π λ€λ₯Έ μμ μ΄ μμνκ²λλ©΄, μλμ μμ μ λ©μΆλ€
Sync π κ²°κ³Όλ₯Ό λ°νλ°μΌλ©΄, λ°λ‘ μ²λ¦¬νλ€
π μμ
μ¬μ | Blocking/Sync μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€ | Blocking/Sync μμ¬λ μλ₯λ₯Ό λ€ μ½λ λμ κΈ°λ€λ¦¬λΌκ³ νλ€(blocking). |
μμ¬κ° μλ₯λ₯Ό λ€ μ½κ³ κ²°κ³Όλ₯Ό μ£Όλ©΄ λ°λ‘ μ²λ¦¬νλ€(sync) |
π μ μ©
μλ°μμ μ
λ ₯μμ²μ μ μ΄κΆμ΄ μ
λ ₯μΌλ‘ λμ΄κ°λ€. κ·Έλμ μ
λ ₯μ λ°κΈ° μ κΉμ§ λ€μ μ½λκ° μ€νλμ§ μκ³ , μ
λ ₯μ λ°μΌλ©΄ μ μ΄κΆκ³Ό ν¨κ» κ²°κ³Όλ₯Ό κ°μ΄ λ°μ μ²λ¦¬νλ€.
Non-Blocking π λ€λ₯Έ μμ μ΄ μμνκ²λμ΄λ, μλμ μμ μ λν μ μ΄κΆμ κ°μ§κ³ μ§ννλ€
Sync π κ²°κ³Όλ₯Ό λ°νλ°μΌλ©΄, λ°λ‘ μ²λ¦¬νλ€
π μμ
μ¬μ | Non-Blocking/Sync μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€ | Non-Blocking/Sync μμ¬λ μ¬μμκ² μλ¦¬λ‘ λμκ°λΌκ³ νλ€(non-blocking). |
μ¬μμ μμ¬μκ² κ²°κ³Όκ° λμλμ§ λ¬Όμ΄λ³Έλ€ | μμ¬λ μμ§μ΄λΌκ³ λλ΅νλ€ |
μ¬μμ μμ¬μκ² κ²°κ³Όκ° λμλμ§ λ λ¬Όμ΄λ³Έλ€ | μμ¬λ κ²°κ³Όκ° λμμλ μ¬μμκ² μ λ¬νλ€ |
μ¬μμ κ²°κ³Όλ₯Ό λ°κ³ λμ λ°λ‘ μ²λ¦¬νλ€(sync) |
π μ μ©
κ²μμμ 맡 λ°μ΄ν°λ₯Ό κ°μ Έμ¬ λ, μ μ μκ² μ 보 λ‘λμ¨μ 보μ¬μ£Όλ κ²½μ°. (progress bar)
Blocking π λ€λ₯Έ μμ μ΄ μμνκ²λλ©΄, μλμ μμ μ λ©μΆλ€
Async π κ²°κ³Όλ₯Ό λ°νλ°μλ, λ°λ‘ μ²λ¦¬νμ§ μμ μ μλ€.
λ³΄ν΅ κ°λ°μμ μ€μλ‘ Non-Blocking/Async νμμΌλ‘ λμνλ €λ μμ μ΄ μλνμ§ μκ² Blocking/Async μΌλ‘ λμνλ κ²½μ°κ° μλ€. NonBlocking/Async λ°©μμ μ°λλ° κ·Έ κ³Όμ μ€μ νλλΌλ BlockingμΌλ‘ λμνλ μμ μ΄ ν¬ν¨λμ΄ μλ€λ©΄ μλνμ§ μκ² Blocking/Asyncλ‘ λμν μ μλ€.
π μμ
μ¬μ | Blocking/Async μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€ | Blocking/Async μμ¬λ μ¬μμκ² κΈ°λ€λ¦¬λΌκ³ νλ€(blocking). |
μ¬μμ κ²°κ³Όμ ν° κ΄μ¬μ΄ μμ§λ§ κΈ°λ€λ¦°λ€ | μμ¬λ μλ₯λ₯Ό λ€ μ½κ³ κ²°κ³Όλ₯Ό λ©μΌλ‘ μ λ¬νλ€ |
μ¬μμ λμ€μ λ©μΌμ μ½κ³ κ²°κ³Όμ λν μμ μ μννλ€ |
Non-Blocking π λ€λ₯Έ μμ μ΄ μμνκ²λμ΄λ, μλμ μμ μ λν μ μ΄κΆμ κ°μ§κ³ μ§ννλ€
Async π κ²°κ³Όλ₯Ό λ°νλ°μλ, λ°λ‘ μ²λ¦¬νμ§ μμ μ μλ€.
μ±λ₯κ³Ό μμμ ν¨μ¨μ μ¬μ© κ΄μ μμ κ°μ₯ μ 리ν λͺ¨λΈμ Non-Blocking/Async λͺ¨λΈμ΄λ€.
π μμ
μ¬μ | Non-Blocking/Async μμ¬ |
---|---|
μ¬μμ μλ₯λ₯Ό μμ±νμ¬ μμ¬μκ² λ³΄κ³ νλ€ | Non-Blocking/Async μμ¬λ μ¬μμκ² μλ₯λ₯Ό μ½μ΄λ³Όν λ μ¬μμκ² μλ¦¬λ‘ λμκ°λΌκ³ νλ€(non-blocking) |
μμ¬λ μλ₯λ₯Ό λ€ μ½κ³ κ²°κ³Όλ₯Ό λ©μΌλ‘ μ λ¬νλ€ | |
μ¬μμ λμ€μ λ©μΌμ μ½κ³ κ²°κ³Όμ λν μμ μ μννλ€ |
π μ μ©
μλ°μ€ν¬λ¦½νΈμμ API μμ²μ νλ€ λ€λ₯Έ μμ
μ μννλ€κ° callback ν¨μλ₯Ό ν΅ν΄ μΆκ°μ μμ
μ μ²λ¦¬ν λ μ¬μ©λλ€.