-2
私はboost :: threadを使用してファンクタを実行します。オブジェクトのデストラクタがで、がメインスレッドで2回コールされているのがわかります。しかし、時には、私はデストラクタがメインスレッドで1回呼び出され、スレッドで1回呼び出されることがわかります。クラスAはいくつかの複雑なものを行うので、この現象は必ずしも起こらない。誰でもこれがどう起こるか考えていますか?functorを実行するためにboost :: threadを使用しますが、デストラクタが間違って呼び出されます
int main()
{
A a; // A is a functor
boost::thread myThread(a);
while (true)
{
// sleep every second until interruption caught
}
myThread.interrupt();
myThread.join();
}
ところで、私はboost :: thread myThread(boost :: ref(a))を使用しています。すべてがうまくいくようです。前もって感謝します。