Как происходит голод в проблеме производителя - PullRequest
0 голосов
/ 13 февраля 2019

Пожалуйста, приведите пример сценария для производителя, где происходит голод.

1 Ответ

0 голосов
/ 14 февраля 2019

Если правильно закодированная проблема «производитель-потребитель» всегда будет свободна от голодания.

  • Блокировка потребителя, пока не будет готов буфер для потребления.
  • Блокировка производителя, пока не будет пустого буферапроизводить.
  • Производитель после создания немедленно перемещаемого буфера в очередь готовых буферов.
  • Потребитель после использования немедленного перемещения буфера в пустую очередь буфера.

Такое расположение не можетпривести к истощению.

Но если вы введете ошибку вроде:

  • Потребитель при определенных условиях не возвращает ранее использованный буфер в пустую очередь буфера и продолжает ожидатьследующий готовый буфер готов к использованию.

  • Или Производитель при определенных условиях не возвращает произведенный буфер в очередь готовых буферов и продолжает ждать получения пустого буфера.

  • Тогда в конечном итоге такая ситуация приведет к голоду.

Такая "ш"сценарий "прижатие при удержании в буфере" может привести к голоданию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...