Ich bin mir nicht sicher, ob dies ein VS 2010 Problem ist oder ich etwas komplett falsch verstehe. Ich bin ein Schub Faden über eine Lambda-Funktion zu schaffen, die eine lokale Variable ändern muss:C++ Lambda-Aufnahme, die lokalen Variablenwert durcheinander bringt
auto oCurrTime(boost::posix_time::microsec_clock::universal_time());
auto spRequestSequenceThread = make_unique<boost::thread>([&oCurrTime, this]()
{
while (!checkAgainstSpecificTime(oCurrTime))
{
...
}
:
:
}
Vor dem Faden zu schaffen, ist oCurrTime etwas wie 2864273654234872634, aber im Thread wird dieser Wert verloren und oCurrTime sofort ist so etwas wie 487465847564875465, macht das Rendern der while-Schleife (wo eine Zeitdifferenz zu einer bestimmten Zeit ausgewertet wird) unbrauchbar.
Vielen Dank für Hilfe.
P. S .: Der obige Code Teil einer Funktion einer Klasse
Was macht Ihr Haupt-Thread nach dem Start dieses Lambda-Threads? Sind Sie sicher, dass 'oCurrTime' nicht existiert und/oder gleichzeitig vom Haupt-Thread aufgerufen wird? –
Die gleichzeitige Nutzung ist definitiv nicht der Fall. Aber ich denke, du hast Recht mit der Existenz Dings, da die Funktionen wahrscheinlich zurückkommen, bevor die Threads enden. Ich habe das nicht berücksichtigt und werde das sofort überprüfen ... – gilgamash