Когда я скомпилирую программу, используя функцию POSIX sem_init()
, я получаю предупреждение о компиляции (ошибка, потому что я обычно использую -Werror
), что функция была устаревшей при компиляции в Mac OS X 10.10.1 (Yosemite) с GCC 4.9.1 или версией Clang (Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
) из XCode 6.1.1. Быстрый просмотр /usr/include/sys/semaphore.h
показывает, что функция действительно имеет тег __deprecated
после его объявления, как и
sem_getvalue()
и
sem_destroy()
.
Вопросы:
-
Учитывая, что в спецификации POSIX нет намека на устаревание, почему эти три функции выделены как устаревшие в Mac OS X?
-
Учитывая, что они устарели, какова замена, и почему предпочтительна замена?
(сначала я проверил Ask Different, и никаких вопросов не было отмечено c и никаких вопросов, которые задают об устаревших системных вызовах - только программы.)