Ich spiele mit der Verwendung von Semaphoren herum, aber ich stoße immer wieder auf Warnhinweise für nicht definierte Referenzen, wodurch mein Code nicht funktioniert. Ich habe Beispielcode aus einem Text gezogen, hatte aber Probleme mit einigen ihrer Syntax, also ging ich zum POSIX-Semaphor-Tutorial und änderte die Dinge auf ihre Syntax um und bekam als Ergebnis diese Referenzfehler.
Ich kann einfach etwas übersehen, aber ich kann es nicht finden.
Fehler:
%Vor%Was ich habe (Es mag ein wenig hässlich aussehen, weil ich die Dinge aus meiner alten Methode kommentiert habe). Ich weiß auch, dass meine Methode zum Hinzufügen nicht funktioniert, aber ich werde dazu kommen, wenn ich meine Syntaxprobleme behebe :
%Vor% Wenn Sie sich auf einem Linux-System befinden, müssen Sie das Flag -pthread
kompilieren und verknüpfen, um die pthreads-Bibliothek zu verknüpfen.
Wie Paul Griffiths darauf hingewiesen hat, können Sie auch -lrt
verwenden, das portabler ist und die POSIX Realtime Extensions-Bibliothek verknüpft
int main(void)
nicht void main()
typedef int semaphore
ist falsch, sem_t
sollte als undurchsichtiger Typ behandelt werden, Sie verwenden diesen typedef niemals in Ihrem Code. consumer
-Code die Semaphore vor der Initialisierung in producer
verwendet. Du solltest sie in deinem main
initialisieren
Tags und Links c semaphore undefined-reference