sync/async
μ ν¬μ€ν μμ Blockingκ³Ό Non-Blockingμ λ€λ€μλλ° μ΄λ²μ λΉμ·ν΄ 보μ΄λ κ°λ μΈ sync / asyncμ λν΄μ ν¬μ€ν νλ € νλ€.
1. sync
Synchronousμ μ½μλ‘ "λκΈ°"λΌλ λ»μ΄λ€. μ¦ λ€μλ§ν΄ μμ²μ 보λ΄κ² λλ©΄ μμ²μ λν μλ΅μ λ°μλκΉμ§ λκΈ°νμλ€κ° μλ΅μ λ°λλ€λ λ§μ΄λ€. (μμ²ν κ°μ²΄κ° μλ΅μ μ§μ λ°λλ€)
μ‘°κΈ λ μ ννκ² λ§νλ©΄ νΉμ μμ μ μνν λ, κ·Έ μμ μ μλ£ μ¬λΆλ₯Ό μ κ²½μ°λ κ²μ λ§νλ€.
κ·Έλ κΈ° λλ¬Έμ λκΈ°μ μ²λ¦¬λ μμ μ λμμ μννκ±°λ, λμμ λλκ±°λ, μ΄μ μμ μ΄ λλλ λμμ μμνλ€.
κ°λ¨ν μμλ‘ A ν¨μκ° B ν¨μμκ² μμ μ μμ²νλ€λ©΄, A ν¨μλ B ν¨μκ° μμ μ΄ λλκ³ μλ΅μ 보λ΄λ κ²μ κΈ°λ€λ¦° ν λ€μ μμ μ μννλ€λ κ²μ΄λ€.
2. async
κ·Έμ λ°ν΄ syncμ λ°λ μ©μ΄μΈ asyncλ λΉλκΈ°λΌλ λ»μΌλ‘, μμ²μ λν μλ΅μ κΈ°λ€λ¦¬μ§ μκ³ λ€λ₯Έ μμ μ μννλ€.
λ°λΌμ, λκΈ°μ μ²λ¦¬μ λ¬λ¦¬ μμ²ν κ°μ²΄κ° μλ΅μ μ§μ λ°μ§ μκ³ μ½λ°±ν¨μμ ννλ‘ λ°λλ€. λν, μμ μ μμκ³Ό μ’ λ£κ° λκΈ°μ λ¬λ¦¬ μΌμ νμ§ μλ€.
A ν¨μκ° B ν¨μμκ² μμ μ μμ²νλ€λ©΄, A ν¨μλ B ν¨μκ° μλ΅μ 보λ΄λ κ²μ κΈ°λ€λ¦¬μ§ μκ³ λ€λ₯Έ μμ μ μννλ€. μν μ€, B ν¨μκ° μλ΅μ 보λΈλ€λ©΄, μ½λ°±ν¨μμ ννλ‘ λ°μμ¨λ€
3. Blocking / Non-Blockingκ³Ό μ°¨μ΄
μ΄ ν¬μ€νΈμ ν΅μ¬μ΄λ€. μ¬μ€ λλ μ΄ κ²μκΈμ μ°κΈ° μ κΉμ§λ μ νν μ°¨μ΄λ₯Ό λͺ°λλ€. λ¨Όμ κ°λ¨νκ² Blocking / Non-Blockingκ³Ό sync/asyncλ₯Ό μ 리νμ.
λ°μ κΈ λΆν° νΈμμ νΈμΆν ν¨μλ A, νΈμΆλ ν¨μλ BλΌκ³ μΉνκ² μ΅λλ€.
3 - 1. Blocking / Non - Blocking
κ΅¬λΆ κΈ°μ€
μμ μ Bκ° μλ£κΉμ§ μ μ΄κΆ O
Bλ μ μ΄κΆ X
Blockingκ³Ό Non-Blockingμ κ΅¬λΆ κΈ°μ€μ νΈμΆλ ν¨μκ° μ μ΄κΆμ μμ νκ³ μλλ, λ°λ‘ νΈμΆν ν¨μμκ² λλ €μ£Όλλ μ΄λ€.
Blockingμ κ²½μ° Bμκ² μ μ΄κΆμ΄ μκΈ°μ Aλ Bμ μμ μλ£μκΉμ§ λ€λ₯Έ μμ μ μννμ§ λͺ»νκ³ κΈ°λ€λ¦°λ€.
**π¨π»βπ» (A) : κ³Όμ₯λ μ 무 μλ₯ μ²λ¦¬ λΆνλ립λλ€. ** π¨π»βπΌ (B) : μλ₯ μ§κΈ μ²λ¦¬ν΄μ λ릴ν λκΉ μ¬κΈ°μ μ μ κΈ°λ€λ¦¬μΈμ.
μ 무μ μ μ΄κΆμ κ³Όμ₯ Bμκ² μλ€. μ¬μ Aλ κ³Όμ₯ Bμ μλ₯ μ²λ¦¬ μ κΉμ§ ν μ 무 X
λ°λλ‘ Non - Blockingμ κ²½μ°, μ μ΄κΆμ΄ Aμκ² λ€μ λλμ κ°κΈ°μ Aλ Bμ μμ μλ£λ₯Ό κΈ°λ€λ¦¬μ§ μκ³ λ€λ₯Έ μμ μ μννλ€.
**π¨π»βπ» (A) : κ³Όμ₯λ μ 무 μλ₯ μ²λ¦¬ λΆνλ립λλ€. ** π¨π»βπΌ (B) : μ κ° μλ₯ μ²λ¦¬ν΄μ κ°λ€ λ릴ν λ μ리κ°μ λ€λ₯Έ μ 무 λ³΄κ³ κ³μΈμ.
μμ λ¬λ¦¬ μ 무μ μ μ΄κΆμ μ¬μ Aμκ² λκ²¨μ£Όμ΄ κ³Όμ₯ Bκ° μλ₯ μ²λ¦¬ μ€μλ μ¬μ Aλ λ€λ₯Έ μ λ¬΄κ° κ°λ₯νλ€.
3 - 2. sync / async
κ΅¬λΆ κΈ°μ€
μμ λ€μ΄ μκ°μ λ§μΆμ΄ μ€ν
μμ λ€μ΄ μκ°μ λ§μΆμ§ μκ³ μ€ν
μ¬κΈ°μ λ§νλ μκ°μ λ§μΆμ΄ μ€νλλ€λ κ²μ μμμ λ§νλ μμ λ€μ΄ λμμ μμνκ±°λ, λμμ λλκ±°λ, λκ³Ό λμμ μμλλ κ²μ λ§νλ€.
syncμ κ²½μ°, Bμ μμ κ²°κ³Όλ₯Ό μλ΅λ°μ Aκ° μ²λ¦¬νλ€. λ°λΌμ μμ μ μ’ λ£/μμμκ°μ΄ μΌμΉνλ€.
**π¨π»βπ» (A) : κ³Όμ₯λ μ 무 μλ₯ μ²λ¦¬ λΆνλ립λλ€. ** π¨π»βπΌ (B) : μ¬κΈ° μλ₯ μ²λ¦¬νμΌμ λλ€. λ°λ‘ μλ₯μ²λ¦¬ νμΌ μΈμ¬λΆμμ λ©μΌλ‘ 보λ΄μ£ΌμΈμ **π¨π»βπ» (A) : λ€ μ§κΈ λ°λ‘ 보λ΄κ² μ΅λλ€. **
Aκ° Bμκ² μμ²ν μλ₯μ²λ¦¬λΌλ μ λ¬΄κ° μ’ λ£λ¨κ³Ό λμμ λ©μΌ 보λ΄κΈ°λΌλ μ λ¬΄κ° μμλλ€. μ¦ μκ°μ λ§μΆμ΄ μ€νλλ€.
λ°λλ‘, asyncμ κ²½μ° Aμ Bκ° μμ μ μμκ³Ό μ’ λ£μκ°μ μ ν μ κ²½μ°μ§ μλλ€. Bλ κ·Έμ μμ²λ°μ μμ μ΄ μλ£λλ©΄ μ½λ°±ν¨μλ‘μ¨ μλ΅νλ€.
**π¨π»βπ» (A) : κ³Όμ₯λ μ 무 μλ₯ μ²λ¦¬ λΆνλ립λλ€. ** π¨π»βπΌ (B) : μ μ κ° μμμ μλ₯ μ²λ¦¬ν΄μ 보λ΄λ릴κ²μ. κ·Έλμ λ λ€λ₯Έ μ 무 νμλμ§ νκ³ κ³μΈμ ...Bμ μλ₯ μ²λ¦¬μ€... π¨π»βπΌ (B) : μ¬κΈ° μλ₯ μ²λ¦¬νκ±° λ릴κ²μ **π¨π»βπ» (A) : λ€ μ²λ¦¬νμ κ±° μ μ± μμ λμλ©΄ μ κ° νλ μ λ¬΄λ€ λ§μΉκ³ μμμ μ²λ¦¬νκ² μ΅λλ€. **
Aλ Bμκ² μμ²ν μλ₯μ²λ¦¬λΌλ μ 무μ μ’ λ£μκ°μ μ κ²½μ°μ§ μκ³ λ€λ₯Έ μ 무λ₯Ό μ§ννλ€. B λν Aμ μ 무 μ§νμ μ κ²½μ°μ§ μκ³ μμ²λ°μ μ 무λ₯Ό μννλ€.
4. 4 κ°λ
μ νΌμ©
λ°λΌμ Blocking / Non - Blockingκ³Ό sync / async 4κ°μ κ°λ μ νΌμ©λμ΄ μ¬μ© λ μ μλ€
4 - 1. Blocking - sync (λκΈ° ν¨μ)
μΌλ°μ μΈ λκΈ° ν¨μμ μλ λ°©μμ΄λ€.
Blockingμ νΉμ±μΈ μ μ΄κΆμ΄ νΈμΆλ ν¨μ Bμκ² μκ³ , syncμ νΉμ±μΈ μμ μ²λ¦¬ μκ°μ λ§μΆ°μΌ νλ€λκ²μ΄ κ²°ν©λ κ²μ΄λ€.
μ¦, Aκ° Bμκ² μμ μ μμ²νκ³ , μμ μ μ΄κΆμ Bμκ² μκΈ°μ Aλ Bμ μμ μλ£ μ κΉμ§ λ€λ₯Έ μμ μ μννμ§ λͺ»νλ€. Bμ μμ μ΄ μλ£λλ©΄ Aμκ² λ€μ μ μ΄κΆμ΄ λμ΄κ° λ€λ₯Έ μμ μ μννλ€ (μμ μ²λ¦¬ μκ° λ§μΆ€ O)
4 - 2 . Blocking - async
λΉλκΈ° λΈλ‘νΉ μ²λ¦¬λ λΉλκΈ°μ΄κΈ° λλ¬Έμ μμ μ²λ¦¬ μκ°μ μκ΄μ΄ μλ€.
νμ§λ§ Blockingμ νΉμ±μΌλ‘ μ μ΄κΆμ΄ μμ²λ°μ Bμκ² μκΈ°μ μμ²ν Aλ Bμ μμ μ΄ λλ λκΉμ§ λκΈ°νκ² λλ€.
Blocking - syncμ λΉμ·νμ§λ§ Bμ μμ κ²°κ³Όκ° μ½λ°±ν¨μλ‘ μ²λ¦¬λλ€λ μ°¨μ΄μ μ΄ μκΈ΄νλ€.
4 - 3 . Non - Blocking - sync
λκΈ°μ μΌλ‘ μ€νλκΈ°μ μμ μ²λ¦¬μκ°μ μΌμΉν΄μΌνλ€. νμ§λ§ Non - Blockingμ νΉμ±μΌλ‘ μ μ΄κΆμ νΈμΆν Aμκ² λ€μ λμμ¨λ€.
μ¬κΈ°μ νΉμ§μ μμ μ²λ¦¬μκ°μ΄ μΌμΉν΄μΌ νκΈ° λλ¬Έμ μ μ΄κΆμ΄ Aμκ² μμ΄ λ€λ₯Έ μμ μ μνν μ μμμλ λΆκ΅¬νκ³ Bμ μμ μλ£ μ¬λΆλ₯Ό κ³μν΄μ νμΈνλ€λ μ μ΄λ€.
4 - 4 . Non - Blocking - async (λΉλκΈ° ν¨μ)
μΌλ°μ μΈ λΉλκΈ° ν¨μμ μλ λ°©μμ΄λ€. λΉλκΈ°μ μΌλ‘ μ€νλκΈ°μ μμ μ²λ¦¬μκ°μ΄ μΌμΉ νμ§ μμλ λκ³ , Non - Blockingμ΄κΈ°μ μμ μ μ μ΄κΆ λν Aμκ² λ€μ λμμ λ€λ₯Έ μμ μ μν ν μ μλ€.
μ¦, Aλ Bμκ² μμ μμ² ν μ μ΄κΆμ λ€μ λλ €λ°κΈ°μ Bμ μμ κ²°κ³Όμ μκ΄μμ΄ λ°λ‘ λ€λ₯Έ μμ μ ν μ μλ€. Bλ μμ μ μννκ³ κ·Έ κ²°κ³Όλ₯Ό μ½λ°±ν¨μλ‘ λ°ννλ€.
5. μμ½
5 - 1 . Blocking / Non-Blocking
Blocking / Non - Blockingμ ν΅μ¬μ ν μμ μ μ²λ¦¬νλ λμ λ€λ₯Έ μμ μ μ²λ¦¬ν μ μλλ μλλ μ΄λ€.
"μμ μ²λ¦¬μ μ μ΄κΆμ΄ λꡬμκ² μλκ°? λ°λΌμ Aμ Bμ λμμμ μ΄ κ°λ₯νκ°?"
5 - 2. Sync / Async
sync / asyncμ ν΅μ¬μ μμ μ΄ μκ°μ λ§μΆμ΄ μ€νλλ κ²μ΄λ€.
μμ²ν(λ°μ)μμ μ²λ¦¬κ° μκ°μ λ§μΆμ΄ μ§νλλκ°?
μκ°μ λ§μΆλ€ : μμ λ€μ΄ λμμ μμνκ±°λ, λμμ λλκ±°λ, λκ³Ό λμμ μμλλ κ²
Last updated