これはVS 2010の問題であるか、何かを完全に誤解しているかどうかはわかりません。スレッドを作成する前にC++ラムダキャプチャがローカル変数値を乱す
auto oCurrTime(boost::posix_time::microsec_clock::universal_time());
auto spRequestSequenceThread = make_unique<boost::thread>([&oCurrTime, this]()
{
while (!checkAgainstSpecificTime(oCurrTime))
{
...
}
:
:
}
、oCurrTimeは2864273654234872634のようなものですが、スレッド内で、この値が失われとoCurrTimeはすぐのようなものです:私は、ローカル変数を変更する必要がラムダ関数を経由してブーストスレッドを作成しています487465847564875465、whileループ(ある特定のTimeとの時間差が評価される)をレンダリングすることは役に立たない。
ありがとうございました。
P.S:上記のコードは、あなたのスレッドは、クラスメソッドから実行するように見えクラス
このラムダスレッドを起動した後、あなたのメインスレッドは何をしますか? 'oCurrTime'が存在しない、あるいはメインスレッドによって同時にアクセスされないことは確かですか? –
同時使用は間違いありません。しかし、スレッドが終了する前に関数がおそらく返すので、あなたは存在の存在について正しいと思います。私はこれを考慮しなかったし、すぐにこれをチェックします... – gilgamash