0

皆さん、iOS でマルチスレッドを設計するには、助けが必要です。

コードで ARC を使用しています。

したがって、基本的には次のことが必要です。

私のメインスレッドnstimerでは、別のスレッドで実行する必要があるいくつかのメソッドを起動します。そのスレッドは何らかの計算を行い、データをivarに入れます。別のスレッドは、そのivarからデータを読み取り、他の計算を行う必要があります。つまり、データがない場合2 番目のスレッドは、スレッドが存在するまで待機する必要があります。

したがって、基本的には、ココア スレッド (NSThread)、GCD、または操作キューを使用するために、どのテクノロジが自分のタスクに最適な選択であるかについてアドバイスを聞きたいと思います。

また、2 つのスレッド間の相互ブロック/同期の側面に関する疑似コードを提供してください。

4

2 に答える 2

1

一部の計算は他の計算が完了するのを待つ必要があると言っているので、NSOperationを見て、さまざまな操作の依存関係を設定する必要があると思います (addDependency を使用)。

于 2012-06-03T09:05:51.350 に答える
0

問題の説明を私たちに残さない限り、それは GCD/ブロック コンボに最適です。実際、私は NSTimer も使用しません (GCD はより良い代替手段を提供します - GCD ベースのタイマーを作成する例については、dispatch_source_create を参照してください)、それはあなたの呼び出しであり、質問が尋ねたものではありません。とにかく、GCDで...

- (void)handleTimer:(NSTimer *)timer {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        __block id someObject;
        // Do work...  manipulate someObject in some manner...
        // When done, invoke other thread... main thread in this case
        dispatch_async(dispatch_get_main_queue(), ^{
            // This code is running in a different thread, and can use someObject directly
        });
    });
}
于 2012-06-03T14:01:39.617 に答える