Ты думаешь об этом задом наперед.Вопрос заключается в следующем: «Если мне нужно синхронизировать использование общего ресурса между несвязанными процессами, как мне это сделать?"И ответ таков: «Вы можете дать семафору имя, и тогда оно не ограничивается использованием в процессах, которые совместно используют память».
Почему это даже полезно?Что ж, варианты использования могут быть нечастыми - возможно, вы никогда не сталкивались с ними - но они, безусловно, существуют.Существует множество ресурсов, которые совместно используются несвязанными процессами: базы данных, файлы конфигурации, последовательные порты, очереди принтеров и многое другое.Вы можете быть посредником между общим использованием этих ресурсов с помощью файлов блокировки, но это неуклюже, и в итоге вы заново изобретаете колесо в каждом проекте.Семафоры, с другой стороны, просты в использовании и имеют четко определенную документированную семантику.
Однако большинство применений семафоров действительно находятся между связанными процессами, которые совместно используют память.И вы не хотели бы излишне оплачивать накладные расходы на поддержание имени в файловой системе.
Таким образом, мы получаем два вида семафоров: дешевые с низкими накладными расходами, которые обслуживают наиболее частые случаи использования, и более тяжелыеболее дорогие, которые можно использовать более широко.Приятно то, что семантика и API очень похожи, поэтому вам не нужно изучать совершенно новый набор понятий, когда вы начнете использовать именованные семафоры.