boost::thread mit Argumenten

Dieses Thema im Forum "C/C++" wurde erstellt von tyr377, 05.03.2007.

  1. #1 tyr377, 05.03.2007
    Zuletzt bearbeitet: 06.03.2007
    tyr377

    tyr377 Grünschnabel

    Dabei seit:
    16.09.2004
    Beiträge:
    6
    Zustimmungen:
    0
    [gelöst] boost::thread mit Argumenten

    Hallo,

    nun ich folgendes Problem. Ich schreibe gerade an einer Klasse die einiges macht und parallel dazu auf Nachrichten aus einer Message-Queue warten soll. Da es unterschiedliche Nachrichten sind möchte ich gerne für jede einen Thread auf machen. Hier mal kurz vereinfacht wie ich mir das vorstelle.
    Code:
    #define MSG_1 1
    class Handler
    {
        private:
                   ...
        public:
                   ...
                   void init();
                   void msg_read(long);
    };
    
    void Handler::msg_read(long msg_type)
    {
       ... //loop zum lesen der Queue
    }
    
    void Handler::init()
    {
       ...
       boost::thread thread1(boost::bind(&DCDHandler::msg_read, this, _1)(MSG_1));
       ...
    }
    
    Leider funktioniert es nicht ganz so mit dem boost::thread wie ich es mir vorgestellt hatte. Kann mir da vielleicht jemand weiter helfen? Danke schon mal im voraus.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tyr377, 06.03.2007
    Zuletzt bearbeitet: 06.03.2007
    tyr377

    tyr377 Grünschnabel

    Dabei seit:
    16.09.2004
    Beiträge:
    6
    Zustimmungen:
    0
    Ich habe mich nun entschieden für jeden Message eine eigene Methode zu schreiben. Ist soweit auch keine Problem. Nun habe ich mir ein Beispiel zusammen gebastelt und bekomme es kompiliert aber leider nicht gelinkt. Hier erstmal mein Source:
    Code:
    #include <stdio.h>
    #include <boost/thread.hpp>
    #include <boost/bind.hpp>
    
    using namespace std;
    
    class boosttest
    {
    	public :
    		void msg_par_change()
    		{
    			printf("jo\n");
    		}
    		
    		void startThread()
    		{
    			boost::thread thread1(boost::bind(&boosttest::msg_par_change, this));
    		}
    };
    
    int main()
    {
    	boosttest t;
    	t.startThread();
    	printf("bla\n");
    	getchar();
    	return 0;
    }
    
    Ich kompiliere es mit der Anweisung:
    Code:
     g++ -o boosttest -lboost_thread boosttest.cpp
    die Lib findet der Linker, kann aber scheinbar einige Referenzen nicht auflösen. :think:
    Code:
    /tmp/ccBEUh6n.o(.gnu.linkonce.t._ZN9boosttest11startThreadEv+0x59): In function `boosttest::startThread()':
    : undefined reference to `boost::thread::thread(boost::function0<void, std::allocator<boost::function_base> > const&)'
    /tmp/ccBEUh6n.o(.gnu.linkonce.t._ZN9boosttest11startThreadEv+0x9c): In function `boosttest::startThread()':
    : undefined reference to `boost::thread::~thread()'
    collect2: ld gab 1 als Ende-Status zurück
    
    Weiß vielleicht jemand woran das liegen könnte?
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Wie man sieht ist meine persönlichkeit doch zwiegespalten, so oft wie ich mir selbst schreibe. :D
    Ich habe nun die boost-Lib komplett neuinstalliert und nun funzt es auch.
     
Thema:

boost::thread mit Argumenten

Die Seite wird geladen...

boost::thread mit Argumenten - Ähnliche Themen

  1. befehle mit argumenten in der schleife ansführen

    befehle mit argumenten in der schleife ansführen: Hi Leute, ich benutze bash. ich will das gleiche mit verschiedenen Argumenten laufen lassen, die ich in einer Datei habe. der Einfachheit...
  2. Solaris 10 - Run Window fragt nach Optionen und Argumenten

    Solaris 10 - Run Window fragt nach Optionen und Argumenten: Hallo, nach Neuinstallation von Solaris 10 auf x86 Platform zeigt sich ein kleines, aber nerviges Problem. Jedes Skript, das eine Shell bzw....
  3. programm gleich mit argumenten starten

    programm gleich mit argumenten starten: hi, also ich wollte fragen wie man es hinbekommt, dass man den namen des programms eingibt und gleich dahinter die argumente, die der funktion...