私たちは非常に多くのバックグラウンド処理を行う iPad アプリを作成していますが、そのすべてが一連の C++ ライブラリで作成されています。これらのライブラリは Linux、Mac、および Windows で正常に動作しますが、iPad ではデバッグ ビルドでのみ動作します。
リリース ビルドでは、最初のサブスレッドがスピンアップされているときに、実際には開始されないか、メイン スレッドが続行できるように十分な処理が行われていないように見えます (リリースビルドでブレークポイントを使用するという通常の問題が原因で、スレッドが実際に開始されているかどうかはデバッガー)。
デバッガーを見ると、メイン スレッドが存在しますboost::thread::start_thread
(実際には 内にありboost::detail::yield
ますboost::detail::spin_lock::lock
)。
CPU は 100% ではないため、スピン ロックが新しいスレッドの作成を妨げているようには見えません。
Boost 1.42 と Boost 1.44 の両方を試しましたが、どちらも同じように動作します。iOS 3.2 と 4.2 の両方がリリース ビルドで失敗します。
何が間違っている可能性がありますか、またはこれは既知の機能しない構成ですか?