Если правильно закодированная проблема «производитель-потребитель» всегда будет свободна от голодания.
- Блокировка потребителя, пока не будет готов буфер для потребления.
- Блокировка производителя, пока не будет пустого буферапроизводить.
- Производитель после создания немедленно перемещаемого буфера в очередь готовых буферов.
- Потребитель после использования немедленного перемещения буфера в пустую очередь буфера.
Такое расположение не можетпривести к истощению.
Но если вы введете ошибку вроде:
Потребитель при определенных условиях не возвращает ранее использованный буфер в пустую очередь буфера и продолжает ожидатьследующий готовый буфер готов к использованию.
Или Производитель при определенных условиях не возвращает произведенный буфер в очередь готовых буферов и продолжает ждать получения пустого буфера.
Тогда в конечном итоге такая ситуация приведет к голоду.
Такая "ш"сценарий "прижатие при удержании в буфере" может привести к голоданию.