Неопределенные справочные проблемы с использованием семафоров
=============================================================

Я играю с использованием семафоров, но продолжаю сталкиваться с предупреждениями Undefined Reference, в результате чего мой код не работает. Я вытащил пример кода из текста, но у меня были проблемы с некоторым их синтаксисом, поэтому я пошел к учебнику по семафорам POSIX и изменил его синтаксис, и в результате теперь получаю эти ссылочные ошибки.

Возможно, я просто что-то упускаю, но не могу найти.

Ошибки:

Что у меня есть (может показаться немного уродливым из-за того, как я комментировал вещи из моего старого метода) Я также знаю, что мой метод добавления не будет работать, но я доберусь до этого, когда исправлю свои проблемы с синтаксисом:

Получил ту же ошибку в Ubuntu QT. После добавления

LIBS + = -lpthread -lrt

в файл project.pro все отлично скомпилировано.



Если вы работаете в системе Linux, вам нужно скомпилировать и связать с`-pthread` флаг, чтобы связать библиотеку pthreads.

Как отметил Пол Гриффитс, вы также можете использовать`-lrt`, который является более переносимым, и связывает библиотеку POSIX Realtime Extensions

`int main(void)` не`void main()``typedef int semaphore` неправильно,`sem_t` следует рассматривать как непрозрачный тип, вы никогда не используете этот typedef в своем коде в любом случае.Проблема, которую я предвижу, заключается в том, что ваша`consumer` код использует семафоры до их инициализации в`producer`, Вы должны инициализировать их в вашем`main`