스레드 동기화3
생산자 소비자 문제
생산자 소비자 문제 사례
생산자-소비자 관계에서 비디오 버퍼는 임계구역이다.
생산자, 소비자 스레드가 접근할 때, 임계구역에서 상호 배제가 일어나야 한다.
밑에는 1:3 관계이다. 촬영장 카메라, 프레임 단위로 읽고 디코딩 해서 적절한 네트워크 통해서 전송
약간의 복잡한 메커니즘..? 위에꺼와 비교해서
생산자 소비자 문제란?
- 공유버퍼를 사이에 두고, 공유버퍼에 데이터를 공급하는 생산자들과, 데이터를 읽고 소비하는 소비자들이, 공유버퍼를 문제 없이 사용하도록 생산자와 소비자를 동기화시키는 문제
생산자 소비자 문제의 3가지 문제
- 상호 배제 해결(생산자, 소비자들의 공유버퍼에 대한 상호 배제)
- 비어있는 공유 버퍼 문제(비어 있는 공유버퍼를 소비자가 읽을 때)
- 꽉 찬 공유버퍼 문제(꽉 찬 공유버퍼에 생산자가 쓸 때)
비어있는 버퍼 문제 해결
- 세마포 R 활용(읽기 가능한 버퍼 개수) : 버퍼가 비어 있는지 살피는 P/V 연산으로 해결
- 세마포 W 활용(쓰기 가능한 버퍼 개수) : 버퍼가 꽉 차 있을 때 처리하는 P/V 연산으로 해결
생산자와 소비자 알고리즘
This post is licensed under CC BY 4.0 by the author.