私はiPhoneアプリケーションでBoostスレッドをしばらく使用していて、問題に遭遇したばかりです。時々、アプリケーションがそのようなスレッドを開始しようとすると、呼び出しを試みているときにエラーがスローされstart_thread()
、アプリケーションがクラッシュします。
これのデバッグをどこから始めればよいのかよくわかりません。ブーストスレッドを初期化できない理由は、デバッガーからは明らかではないようです。これは、アプリケーションがしばらく実行された後、およびいくつかのスレッドがすでに正常に開始された後にのみ発生することに注意してください。
私は最近UIに取り組んでおり、次のコマンドを使用して、UIへのすべての更新が呼び出された直後に行われるようにしています。
[myViewController performSelectorOnMainThread : @ selector(show_myButton) withObject:nil waitUntilDone:YES];
そのコマンドは機能しているようで、UIはすぐに(遅延する前に)更新されますが、私が抱えているブーストスレッドの問題の原因である可能性があります。それはありそうですか?誰かが以前にこのようなことを経験したことがあり、何が間違っている可能性があるかについて何か提案がありますか?
スレッドを開始するためのコードは次のとおりです。
void ObjectiveCPlusPlusInterface::startMyThread(void* a, myObject* b)
{
boost::thread AVPlayerThread = boost::thread(&ObjectiveCPlusPlusInterface::myThreadFunction, this, a, b);
}
(ここで、aとbは変数です)
void ObjectiveCPlusPlusInterface::myThreadFunction(void* a, myObject* b)
{
...
}
ご覧のとおりstartMyThread()
、関数を実行するブーストスレッドを開始しようとしますmyThreadFunction()
。ただし、myThreadFunction()
ブーストスレッドを開始するとエラーがスローされるため、に到達しません。