Я бы не назвал Cygwin или MSYS2 просто «инструментами», поскольку они представляют собой целые дистрибутивы программного обеспечения, каждый из которых полагается на специальную библиотеку времени выполнения. Тем не менее, MSYS2 не будет решением вашей проблемы. В отличие от Cygwin, целью MSYS2 является не предоставление полного уровня эмуляции POSIX. См. Чем MSYS2 отличается от Cygwin .
Если вы создадите свою проблему с помощью цепочки инструментов Cygwin, у вас будет поддержка большинства распространенных API-интерфейсов POSIX, включая sem_open
. Однако ваша программа будет зависеть от всей среды выполнения Cygwin, поэтому вы должны как минимум включить в нее cygwin1.dll.
В качестве альтернативы, хотя вы не совсем точно поняли, что пытаетесьделайте, вы можете реализовать именованные семафоры в своем порте Windows, используя собственный API Windows для семафорных объектов . Вот замечательная небольшая библиотека , которая предоставляет (приблизительно; возможно, достаточно хорошо для вас) семафоры POSIX, реализованные поверх собственного API-интерфейса Windows, хотя я не использовал его, поэтому я не даю никаких гарантий относительно его надежности,более того, это хороший пример.