Implementing the "producer-consumer" task using semaphores
Implementing the “producer-consumer” task using semaphores
Процесс (thread) producer получает символы, вводимые с клавиатуры,
и записывает их в кольцевой буфер. Параллельные ему процессы consumer
считывают символы с кольцевого буфера. Причем первый процесс считывает
только символы, являющиеся буквами английского алфавита (прописные и строчные),
второй только символы – цифры, а третий все остальные символы.
Если текущий символ в буфере не является типом символов, с которыми
работает исполняющийся процесс consumer, то этот процесс не изменяет
содержимое буфера. Для организации критических секций при доступе к
общему ресурсу – кольцевому буферу - использовать бинарный семафор,
а также считающие семафоры для подсчета пустых (empty) и заполненных (full).