Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Suchergebnisse

Suchergebnisse 1-7 von insgesamt 7.

Werbeanzeige

10.07.2015, 20:10

Forenbeitrag von: »CSharp«

boost::thread funktion mit funktionszeiger als argument

Die Optimierung wird sehr häufig gemacht. Im Schnitt sinds 10.000 Optimierungen von Q's. Deshalb dacht ich mir das auch mit dem Thread. Was ich probiert habe, ist, meiner Klasse, die die Optimierung durchführt, eine Membervariable boost::thread m_Thread zu geben, sodass nicht immer ein neuer Thread erzeugt werden muss. Allerdings gibt es iwie in C++ nicht die Möglichkeit (jedenfalls habe ich nichts entsprechendes finden können), zu sagen: //Sei m_Thread die private boost::thread variable meiner ...

10.07.2015, 18:02

Forenbeitrag von: »CSharp«

boost::thread funktion mit funktionszeiger als argument

Ja, ich habe mir das nochmal angeguckt und die Threaderstellung lohnt sich einfach nicht. Ich brauche etwa 1 ms für die Optimierung eines Q's. Ich denke, dass da dann die Threaderstellung einfach negativ ins Gewicht fällt. Ich müsste wohl selber so eine Art Threadpool schreiben, damit sich das eventuell lohnt (CRT kann ich nicht nutzen). Sry, noch den letzten Teil deiner Frage vergessen Schrompf: Die Threads greifen auf alle Sachen nur lesend zu, somit dachte ich mir, dass sich das mit dem Mutex...

09.07.2015, 15:44

Forenbeitrag von: »CSharp«

boost::thread funktion mit funktionszeiger als argument

Hmm okay, da du jetzt der zweite bist, kann es ja sein, dass ich etwas nicht verstanden habe, deshalb erklär ich kurz wie ich das sehe: Ich habe insgesamt 3 Aufgaben zu erledigen, wobei Aufgabe 1 ist opt(P), Aufgabe 2 ist opt(Q) und Aufgabe 3 ist machEtwasMit(P,Q) hängt somit also davon ab, dass Aufgabe 1+2 fertig sind, damit Aufgabe 3 starten kann. Wenn ich mein Programm habe, dann habe ich ja default mäßig einen Mainthread. Wenn ich jetzt in MyClass::Optimize(P,Q) bin, bin ich ja erstmal noch ...

08.07.2015, 15:22

Forenbeitrag von: »CSharp«

boost::thread funktion mit funktionszeiger als argument

Ne, das stimmt nicht ganz, was du schreibst und zwar aus folgendem Grund: Ich will ja P und Q optimieren. Die Optimierungen sind Unabhängig von einander, d.h. also, dass ich ja eigentlich die Optimierung für Q in einem neuen Thread anschmeißen kann und dann direkt nachdem der Thread gestartet ist, die Optimierung für P starten kann. Da ich nach der Optimierung der beiden aber beide brauche, muss ich auf den Thread mit dem Q warten, sollte dieser länger brauchen. Bsp: opt(P) ||(parallel) opt(Q) s...

08.07.2015, 14:50

Forenbeitrag von: »CSharp«

boost::thread funktion mit funktionszeiger als argument

Habe boost ohnehin schon includiert, weil ich es noch woanders brauche, ist ja im Prinzip egal

08.07.2015, 13:19

Forenbeitrag von: »CSharp«

boost::thread funktion mit funktionszeiger als argument

Vielen Dank für die schnelle Hilfe! Ich habe mich für deine 2. Lösung entschieden Schrompf, d.h. für die Lambda Funktion, jedoch mit boost::thread (es geht damit genau so 1:1). Leider musste ich feststellen, dass es kaum schneller eher sogar 2 Sekunden langsamer geworden ist und ich dachte, es wäre eine Topidee, um das Ganze performanter zu machen . Anscheinend löst Minpack wohl die Optimierungsaufgabe so schnell, dass sich der Threaderzeugungsoverhead kaum lohnt. So, hab ich es nun realisiert, ...

07.07.2015, 20:25

Forenbeitrag von: »CSharp«

boost::thread funktion mit funktionszeiger als argument

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#-Programm...

Werbeanzeige