samspade
2005-08-30, 16:40:17
Hallo
Ich bin vor kurzem auf die diese Seite http://www.kharchi.de/ gestoßen und habe dort das Beispiel über die Threads gesehen.
#include <iostream>
#include <boost/thread/thread.hpp>
using namespace std;
void function1(){ for(int i=0; i<10000; i++)
cout << "huhu: " << i << endl;}
void function2(){ for(int i=0; i<10000; i++)
cout << "lala: " << i << endl;}
int main(){boost::thread t1(&function1);
// Thread-Objekt t1 erstellen und function1() starten.
function2();
// t1 läuft gleichzeitig weiter, während function2() aufgerufen wird!}
Schön einfach dachte ich und habs gleich mal ausprobiert. Nach mehreren Anläufen hab ich es dann auch zum laufen bekommen (unter VS 2003.net). Nun wollte ich das mal in einem eigenen Programm versuchen. Nun ist das Problem, dass der Funktionaufruf anders aussieht als im Beispiel.
z.B. erg=berechnung(zahl); .
Das lässt sich ja leider nicht einfach nach dem Beispiel umsetzen, also:
boost::thread t1(&erg=... oder erg=boost..
Das funktioniert auch nicht mit irgendwelchem eingeklammere.
Also wie kann man die Funktion als thread starten (der Compiler regt sich schon auf wenn ich nur den Parameter übergebe) und das Ergebnis auch noch einer Variablen übergeben? Ohne größeren Aufwand, versteht sich. Im übrigen ist die Dokumentation hierbei nicht sehr hilfreich.
Hoffe das war jetzt irgendwie verständlich.
schon mal Danke.
Grüße
Sam
Ich bin vor kurzem auf die diese Seite http://www.kharchi.de/ gestoßen und habe dort das Beispiel über die Threads gesehen.
#include <iostream>
#include <boost/thread/thread.hpp>
using namespace std;
void function1(){ for(int i=0; i<10000; i++)
cout << "huhu: " << i << endl;}
void function2(){ for(int i=0; i<10000; i++)
cout << "lala: " << i << endl;}
int main(){boost::thread t1(&function1);
// Thread-Objekt t1 erstellen und function1() starten.
function2();
// t1 läuft gleichzeitig weiter, während function2() aufgerufen wird!}
Schön einfach dachte ich und habs gleich mal ausprobiert. Nach mehreren Anläufen hab ich es dann auch zum laufen bekommen (unter VS 2003.net). Nun wollte ich das mal in einem eigenen Programm versuchen. Nun ist das Problem, dass der Funktionaufruf anders aussieht als im Beispiel.
z.B. erg=berechnung(zahl); .
Das lässt sich ja leider nicht einfach nach dem Beispiel umsetzen, also:
boost::thread t1(&erg=... oder erg=boost..
Das funktioniert auch nicht mit irgendwelchem eingeklammere.
Also wie kann man die Funktion als thread starten (der Compiler regt sich schon auf wenn ich nur den Parameter übergebe) und das Ergebnis auch noch einer Variablen übergeben? Ohne größeren Aufwand, versteht sich. Im übrigen ist die Dokumentation hierbei nicht sehr hilfreich.
Hoffe das war jetzt irgendwie verständlich.
schon mal Danke.
Grüße
Sam