[CS/운영체제] 멀티스레드와 동시성 - 11부

황제연·2025년 7월 4일
0

CS학습

목록 보기
125/193
post-thumbnail

생산자 소비자 문제

생산자 소비자 문제는 멀티스레드 프로그래밍에서 자주 등장하는 동시성 문제입니다
주로 여러 스레드가 동시에 데이터를 생산하고 소비하는 상황을 다룹니다

생산자

데이터를 생성하는 역할을 하며, 파일에서 데이터를 읽거나 네트워크에서 데이터르 받아오는
스레드가 생산자 역할을 합니다

소비자

생성된 데이터를 사용하는 역할을 합니다
데이터를 처리하거나 저장하는 스레드가 소비자 역할을 할 수 있습니다

버퍼

생산자가 생성한 데이터를 일시적으로 저장하는 공간입니다
버퍼는 한정된 크기를 가지고 생산자와 소비자가 해당 버퍼를 통해 데이터를 주고 받습니다

문제상황

하지만 생산자가 너무 빨라 생산자가 버퍼에 빈 공간이 생길 때까지 기다리거나
버퍼가 비어있어서 소비자가 버퍼에 새로운 데이터가 들어올 때까지 기다려야하는 상황이 있습니다

정리

이 문제는 다시 정리하면 생산자 스레드와 소비자 스레드가 특 정 자원을 함께 생산하고 소비하며
발생하는 생산자 소비자 문제(Producer-consumer problem)와
중간에 있는 버퍼의 크기가 한정되어 있기 때문에
한정된 버퍼 문제(bounded-buffer problem)라고도 합니다

참고

  • 김영한의 실전 자바 - 고급 1편
profile
Software Developer

0개의 댓글