バックグラウンド スレッドでコードを実行しています。これはある種の計算を実行しており、do-while ループ内にあります。要件の変更により、ユーザーに入力を促す UI を表示する必要があります。この UI コードはメイン スレッドで実行する必要があり、プロンプトが入力された後、ロジックを続行する必要があります。メインスレッドでdispatch_asyncを使用してUIを表示できますが、UIが完了するまでステップ-2を続行しないでください。コードの流れを壊したり、ユニットをブロックに移動したりせずに、これを達成するための最良の方法は何ですか?
例えば:
-(void) compute
{
do
{
//calculate some data
// Step -1...
...
// Step -2
...
...
} while(flag)
}
ステップ 1 とステップ 2 の間に、プロンプトを表示したい。そうするための最良の方法は何ですか?UI が完了した後、メイン スレッドによって起動されるミューテックスを使用して、このバックグラウンド スレッドをブロックしてもよろしいですか?