Ich entschuldige mich hiermit für solch einen allgemeinen Titel.
Ich schreibe eine physikalische Simulation-Anwendung, die Daten in 3D mit OpenGL anzeigt, und eine der Funktionen, die für einige schwere Berechnungen verantwortlich ist, scheint die Leistung ein wenig zu halten. Ich möchte, dass sie "im Hintergrund" gemacht werden, ohne die Anwendung für ein paar Sekunden einzufrieren. Allerdings scheint std :: thread in meinem Fall nicht zu funktionieren.
Die Funktion, die ich versuche zu fädeln, enthält viele Berechnungen, sie weist hier und da etwas Speicher auf, ruft andere Funktionen auf und verwendet Klassen, wenn das wichtig ist. Ich habe eine Wrapper-Funktion erstellt, von dem ich versuche, einen Thread zu starten:Amateur kann std nicht verstehen :: Thread-Verwendung
void WrapperFunction(void)
{
std::thread t(DoSomethingSerious);
t.join();
}
Es scheint jedoch, dass es Null-Effekt hat, wie gerade, wenn es DoSomethingSerious direkt aufgerufen. Was könnte das Problem sein?
Vielleicht 'lesen Sie auf' std :: thread :: join(). – juanchopanza
't.join();' wartet darauf, dass der Thread beendet wird, bevor es zur nächsten Zeile weitergeht. –