boost::thread mit Argumenten

T

tyr377

Grünschnabel
[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.
 
Zuletzt bearbeitet:
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.
 
Zuletzt bearbeitet:

Ähnliche Themen

NagiosGrapher 1.7.1 funktioniert nicht

2 WAV Dateien gleichzeitig abspielen + SDL

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Externe Medien nicht mountbar

SUSe Block Port

Zurück
Oben