생산자 소비자 문제는 멀티스레드 프로그래밍에서 자주 등장하는 동시성 문제입니다
주로 여러 스레드가 동시에 데이터를 생산하고 소비하는 상황을 다룹니다
데이터를 생성하는 역할을 하며, 파일에서 데이터를 읽거나 네트워크에서 데이터르 받아오는
스레드가 생산자 역할을 합니다
생성된 데이터를 사용하는 역할을 합니다
데이터를 처리하거나 저장하는 스레드가 소비자 역할을 할 수 있습니다
생산자가 생성한 데이터를 일시적으로 저장하는 공간입니다
버퍼는 한정된 크기를 가지고 생산자와 소비자가 해당 버퍼를 통해 데이터를 주고 받습니다
하지만 생산자가 너무 빨라 생산자가 버퍼에 빈 공간이 생길 때까지 기다리거나
버퍼가 비어있어서 소비자가 버퍼에 새로운 데이터가 들어올 때까지 기다려야하는 상황이 있습니다
이 문제는 다시 정리하면 생산자 스레드와 소비자 스레드가 특 정 자원을 함께 생산하고 소비하며
발생하는 생산자 소비자 문제(Producer-consumer problem)와
중간에 있는 버퍼의 크기가 한정되어 있기 때문에
한정된 버퍼 문제(bounded-buffer problem)라고도 합니다