๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Design Pattern]Producer-Consumer Pattern ์ƒ์‚ฐ์ž-์†Œ๋น„์ž ํŒจํ„ด

๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์‚ฐํ•˜๋Š” ์ฃผ์ฒด(producer, ์ƒ์‚ฐ์ž), ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์ฒด(consumer, ์†Œ๋น„์ž), ๋ฐ์ดํ„ฐ ๋ชฉ๋ก(Channel, buffer ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ถ€๋ฅด๋”๋ผ)์œผ๋กœ ๋ถ„๋ฆฌ.

๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ์ฒ˜๋ฆฌ ๋ถ€๋ถ„์— ์ค‘๊ฐ„ ์—ฐ๊ฒฐ ๊ณ ๋ฆฌ๋ฅผ ๋‘๋Š” ๊ฒƒ.

 

๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„

์ƒ์‚ฐ์ž > ๋ฒ„ํผ(๋ฐ์ดํ„ฐ ๋ชฉ๋ก) > ์†Œ๋น„์ž

 

  • ์ƒ์‚ฐ์ž๊ฐ€ ์•„์ดํ…œ์„ ์ƒ์‚ฐํ•˜๊ณ  ๊ฐ ์•„์ดํ…œ์„ ๋ฒ„ํผ๊ฐ€ ๊ฐ€๋“์ฐฐ ๋•Œ๊นŒ์ง€ ๋„ฃ๋Š”๋‹ค. ๋ฒ„ํผ์— ์—ฌ์œ  ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๋ฉด ์ƒ์‚ฐ์ž๊ฐ€ ๋‹ค์‹œ ์•„์ดํ…œ์„ ์ƒ์‚ฐํ•ด ๋ฒ„ํผ์— ๋„ฃ๋Š”๋‹ค.
  • ์†Œ๋น„์ž๊ฐ€ ์•„์ดํ…œ์„ ๋ฒ„ํผ์—์„œ ๊บผ๋‚ด ์†Œ๋น„ํ•˜๊ณ , ๋ฒ„ํผ์— ์•„์ดํ…œ์ด ์—†์œผ๋ฉด ๋Œ€๊ธฐํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ ์ƒ์‚ฐ ์ฃผ์ฒด์™€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ฃผ์ฒด๋ฅผ ๋ถ„๋ฆฌํ–ˆ๊ธฐ์— ์ฝ”๋“œ์˜ coupling์„ ์ค„์ธ๋‹ค.

์ƒ์‚ฐ์ž๋Š” ์†Œ๋น„์ž์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์†Œ๋น„์ž๋„ ์ƒ์‚ฐ์ž์— ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™œ์šฉ์‹œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด. ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ์†๋„๋ฅผ ๋Š˜๋ฆฌ๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ. Thread-safe ๊ณ ๋ ค๊ฐ€ ํ•„์š”.