Предположим, у нас есть двоичный семафор s, который имеет значение 1, и два процесса одновременно пытаются выполнить P на s.Только одна из этих операций сможет завершиться до следующей операции V на s;другой процесс, пытающийся выполнить операцию P., приостановлен.
Взято из заметок моего университета:
Мы можем думать, что P и V контролируют доступ к ресурсу:
Когда процесс хочет использовать ресурс, он выполняет операцию P: если это удается, он уменьшает количество доступного ресурса и процесс продолжается;если весь ресурс используется в данный момент, процесс должен ждать.
Когда процесс завершается с ресурсом, он выполняет операцию V: если на ресурсе ожидают процессы, один из них активируется;
, если не было ожидающих процессов, семафорувеличивается, указывая на то, что теперь больше свободного ресурса.Обратите внимание, что определение V не указывает, какой процесс активизируется, если более одного процесса было приостановлено на одном семафоре.
Семафоры могут решать проблемы как взаимного исключения, так и синхронизации условий.Итак, ответ на оба ваших вопроса: да.