В каких ситуациях есть необходимость в использовании НЕ бинарного семафора?
Не могу найти примеров задач, когда есть необходимость в использовании семафора с начальным значением счетчика большим, чем 1.
Везде пишут о том, что такой семафор нужен в тех ситуациях, когда у нас есть определенное количество единиц некоторого ресурса, и начальное значение счетчика семафора должно устанавливаться равным количеству единиц этого ресурса.
Но не очень понятно, что это могут быть за ресурсы такие, хотелось бы увидеть примеры.
например когда семафор служит в 2 стороны(что бы количество ресурса или чего то не перевалило ниже 0 и не больше максимума )
те условно ты обрабатываешь количество картохи в ведре
тебе нужно что бы процесс шел пока картошка есть в ведре (те счетчик семафора >0 иначе процесс останавливается) или же пока картошка не начала вываливаться из ведра
Ну на картошке мне это все понятно.
Но хотелось бы в терминах программирования, на примерах каких-то программных объектов.
С тем же ведром картошки - как семафор поможет?
В ведре 10 картофелин, семафор установлен на десятку.
И как в такой ситуации поможет семафор?
Он пропустил два потока одновременно, оба потока видят ведро и одновременно тянутся к картофелине, лежащей сверху и пытаются работать с одной.
Получаем race condition, как-то снмафор не сильно помог, выходит.