Semaphoren



  • Servus,
    ich muss mich seit Neustem mit Semaphoren rumschlagen und bräuchte mal etwas Hilfe!
    Hier ein kleines (nicht funktionierendes) Beispiel:

    #include <iostream>
    #include <semaphore.h>
    
    using namespace std;
    
    sem_t sem;
    int konten[100];
    
    int buchen (int KNr, int betrag) {
    	sem_wait(&sem);
    
    	int alt= konten[KNr];
    	int neu = alt + betrag;
    	konten[KNr] = neu;
    
    	sem_post(&sem);
    }//buchen
    
    int main(int argc, char* argv[]) {
    
    	cout << "Welcome...\n";
    	sem_init(&sem, 0, 1);
    
    	buchen(20, 100);
    
    	return 0;
    
    }//main
    

    Der Compiler (g++ und Suse Linux) meckert aber, dass er er die Funktionen sem_init(), sem_post() und sem_wait() nicht kennt. Sind das keine bereitgestellten Funktionen der includierten semaphore.h???
    Wie bekomme ich dieses Bsp. zum Laufen?

    Danke,

    Sietsch.



  • Da dein compiler scheinbar nicht bei
    #include <semaphore.h>
    gemeckert hat nehme ich einmal an dass nicht der compiler sondern der linker probleme hat die genannten funktionen zu finden.
    BTW Standard C/C++ kennt keine semaphoren. Vielleicht kann dir jemand in Linux-Forum helfen.
    Kurt.



  • Wofür braucht man in ner Anwendung mit einem Thread Semaphoren?

    MfG Spacelord



  • Spacelord schrieb:

    Wofür braucht man in ner Anwendung mit einem Thread Semaphoren?

    Gute Frage.
    K.



  • Zunächst man danke!

    Wofür braucht man in ner Anwendung mit einem Thread Semaphoren?

    Vom Einfachem zum komplexen! Macht wohl wenig Sinn gleich in die Vollen zu gehen, wenn schon die Grundlagen nicht klar sind, oder??

    Sietsch.



  • Spacelord schrieb:

    Wofür braucht man in ner Anwendung mit einem Thread Semaphoren?

    Du kannst damit zB implementieren, dass maximal n Instanzen deiner Anwendung zur gleichen Zeit laufen.



  • Hier die Lösung:

    g++ -c SOURCE.cpp -lpthread
    g++ -o OUTPUT *.o -lpthread

    Gruß,

    Sietsch.




Log in to reply