Hallöchen,
ich versuche gerade eine cminpack(link zu der Seite von cminpack
http://devernay.free.fr/hacks/cminpack/) Funktion parallel laufen zu lassen, doch es funktioniert leider nicht.
Im Normalfall, würde ich die Funktion wie folgt aufrufen: __cminpack__func(lmdif1)(fcn, (list of other arguments such as int and double...)). Lmdif1 bedeutet, dass ich den Levenberg-Marquardt(LM-) Algorithmus für mein Problem
nutzen möchte. __cminpack__func ist wie ich deuten kann (bin nämlich eigtl C#-Programmierer muss aber für meine Bachelorarbeit C++ verwenden) ein Makro, dass die entsprechende Funktion dann richtig aufruft. Der LM-Algrorithmus braucht, damit er funktionieren kann, eine Funktion - hier fcn genannt - und noch ein paar eher uninteressante weitere Parameter überwiegend integers und doubles bzw. pointer zu denen.
Nun ja, das oben läuft auch richtig, nun wollte ich das ganze aber mit boost::thread wie folgt parallelisieren:
boost::thread t;
t.start_thread(__cminpack__func(lmdif1),fcn, (...further arguments, same as above))
das funktioniert leider nicht. Genauso wie andere versuche mit ThreadGroups und boost::bind etc... Immer sagt er mir, dass die Argumentenlisten nicht übereinstimmen, obwohl sie dies eigentlich sollten
( bin schon am verzweifeln...
Deshalb wollte ich mal fragen, ob das denn überhaupt möglich ist, eine Funktion in einem Thread zu übergeben, wobei die übergebene Funktion als Argument selbst eine Funktion entgegen nimmt?
Ich konnte leider auch im Netz nichts wirklich hilfreiches finden. Immer kamen Beispiele mit gewöhnlichen Argumenten....
Wäre super, wenn mir jemand helfen könnte
Danke im voraus!
Gruß,
CSharp