λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

빈 ꡬ멍 μ±„μš°κΈ°

[Design Pattern]Producer-Consumer Pattern μƒμ‚°μž-μ†ŒλΉ„μž νŒ¨ν„΄

데이터λ₯Ό μƒμ‚°ν•˜λŠ” 주체(producer, μƒμ‚°μž), 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 주체(consumer, μ†ŒλΉ„μž), 데이터 λͺ©λ‘(Channel, buffer λ“± λ‹€μ–‘ν•˜κ²Œ λΆ€λ₯΄λ”라)으둜 뢄리.

데이터 생성, 처리 뢀뢄에 쀑간 μ—°κ²° 고리λ₯Ό λ‘λŠ” 것.

 

λ°μ΄ν„°μ˜ 흐름

μƒμ‚°μž > 버퍼(데이터 λͺ©λ‘) > μ†ŒλΉ„μž

 

  • μƒμ‚°μžκ°€ μ•„μ΄ν…œμ„ μƒμ‚°ν•˜κ³  각 μ•„μ΄ν…œμ„ 버퍼가 가득찰 λ•ŒκΉŒμ§€ λ„£λŠ”λ‹€. 버퍼에 μ—¬μœ  곡간이 생기면 μƒμ‚°μžκ°€ λ‹€μ‹œ μ•„μ΄ν…œμ„ 생산해 버퍼에 λ„£λŠ”λ‹€.
  • μ†ŒλΉ„μžκ°€ μ•„μ΄ν…œμ„ λ²„νΌμ—μ„œ κΊΌλ‚΄ μ†ŒλΉ„ν•˜κ³ , 버퍼에 μ•„μ΄ν…œμ΄ μ—†μœΌλ©΄ λŒ€κΈ°ν•œλ‹€.

 

데이터 생산 주체와 데이터 처리 주체λ₯Ό λΆ„λ¦¬ν–ˆκΈ°μ— μ½”λ“œμ˜ coupling을 쀄인닀.

μƒμ‚°μžλŠ” μ†ŒλΉ„μžμ— λŒ€ν•΄ μ‹ κ²½ μ“Έ ν•„μš”κ°€ μ—†λ‹€. μ†ŒλΉ„μžλ„ μƒμ‚°μžμ— μ‹ κ²½ μ“Έ ν•„μš”κ°€ μ—†λ‹€.

λ©€ν‹°μ“°λ ˆλ“œ ν™œμš©μ‹œ μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄. μ²˜λ¦¬λŸ‰κ³Ό 속도λ₯Ό 늘리고자 ν•  λ•Œ μ‚¬μš©. Thread-safe κ³ λ €κ°€ ν•„μš”.