Ich verwende VS2015.Führt nicht korrekt gleiche Operationen im Freigabemodus aus
Im Debug-Modus hervorgehoben while-Schleife funktioniert korrekt - wenn !P_Object->first_request
wahr ist, bricht es.
Aber dieselben Bedingungen funktionieren nicht im Freigabemodus. Außerdem kann man in der Quickwatch sehen, dass die Visual Studio Quickwatch !P_Object->first_request
als falsch erkennt, aber die Schleife wiederholt sich.
BTW: P_Object->first_request
Variable als falsch in der Klasse initialisiert und auf True in Thread (vielleicht ist diese Information hilfreich - idk).
Wie um diesen Fehler zu beheben?
DEBUG Command line - "/GS /analyze- /W3 /Zc:wchar_t /I"C:\boost_1_62_0" /ZI /Gm /Od /Fd"Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "WIN32_LEAN_AND_MEAN_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MTd /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\ExpenditureAndReceipts.pch"";
RELEASE Command line - "/GS /analyze- /W3 /Gy /Zc:wchar_t /I"C:\boost_1_62_0" /Zi /Gm- /O2 /Fd"Release\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "WIN32_LEAN_AND_MEANNDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MT /Fa"Release\" /EHsc /nologo /Fo"Release\" /Fp"Release\ExpenditureAndReceipts.pch"";
Ich denke, dass es optimiert wurde, da die Schleife nichts tut – pm100
Sie könnten die Variable "volatile" markieren, um den Compiler zu sagen, seine Verwendung nicht zu optimieren. –
Sie müssen korrekte Inter-Thread-Synchronisation verwenden (* nicht * nur Slapping 'volatile' auf die Variable). Verwenden Sie einen atomaren Datentyp, einen kritischen Abschnitt, Mutex oder was auch immer geeignet ist. –