Ваш вопрос немного странный. Прежде всего, вам НЕ НУЖНО использовать семафоры, так как существуют другие методы синхронизации.
Во-вторых, отказ от использования семафора обычно не приводит к взаимоблокировке (если у вас не было семафора, защищающего блокировку или другой метод синхронизации по какой-либо причине). ИСПОЛЬЗОВАНИЕ методов синхронизации имеет тенденцию вызывать взаимоблокировки, а не их отсутствие.
Однако, когда у вас есть писатель (и) и читатель (и), борющиеся за один и тот же ресурс, вы можете иметь так называемое Состояние гонки
Теперь к вашему вопросу об одном писателе и одном читателе: это можно сделать с помощью мьютексов вместо семафоров или любого другого числа методов синхронизации. В качестве альтернативы, если вы можете гарантировать, что записи B-процесса являются атомарными (то есть они не могут оставить общую память в несогласованном состоянии при прерывании), синхронизация не требуется. Последний сценарий маловероятен, если общая память не может быть обновлена с помощью одной инструкции (а иногда даже этого недостаточно). Вам будет лучше просто выбрать безопасный маршрут и каким-то образом заблокировать доступ к общей памяти.