Ios-development-with-swift2-concurrency-control

提供:Dev Guides
移動先:案内検索

同時実行制御

同時実行は、複数のことを同時に実行する方法です。 アプリケーションでは、同時実行性とは、同時に/同時に実行される複数のタスクを指します。

同時実行により、アプリケーションがより速く、よりクリーンになり、ユーザーにより良いエクスペリエンスが提供されます。 多くの開発者にとってマルチスレッドの使用は難しいように見えますが、 NSOperationDispatch Queues のようなAPIを使用すると、アプリケーションで並行処理とマルチスレッドを簡単に使用できます。

グランドセントラル派遣

GCDは、並行コードを管理し、システムレベルで非同期的に操作を実行するために最も一般的に使用されるAPIです。 GCDは、タスクのキューを提供および使用します。 これらのキューは、FIFOの用語を使用するデータ構造です。 キューの最初の場所にあるタスクが最初に実行され、キューの最後のタスクが最後に実行されます。

たとえば-映画のチケット予約ラインで、あなたが最後の人である場合、あなたは最後にチケットを取得し、誰かがあなたの後に来る場合、彼はあなたの後にチケットを取得します。

ディスパッチキュー

ディスパッチキューは、アプリケーションで非同期的かつ同時にタスクを実行する簡単な方法です。 キューには2種類あります-

  • シリアルキュー-タスクを一連の方法で保存し、一度に1つのタスクを実行します。
  • 同時キュー-タスクを一連の方法で保存し、一度に1つのタスクを実行します。

キューを作成または取得するために使用される機能のいくつかは-

dispatch_queue_create
//create a serial or concurrent queue
dispatch_queue_get_label
//get the label of a given queue
dispatch_get_main_queue
//get the one and only main queue
dispatch_get_global_queue
//get one of the global concurrent queues

キューへのタスクの追加

キューにタスクを追加するのに役立つ2種類の関数があります。 彼らは-

同期関数-

  • dispatch_once -アプリケーションの有効期間を超えたタスクのみを送信します。
  • dispatch_sync -タスクをキューに送信し、タスクが完了したときにのみ戻ります。

非同期関数-

  • Dispatch_async -タスクを送信して戻ります。
  • Dispatch_after -すぐに戻りますが、特定の時間遅延します。
  • Dispatch_async -すぐに戻りますが、タスクは複数回送信されます。

コード例

以下は、タスクをキューに追加するためのコード例です。

dispatch_async(dispatch_get_main_queue(), update_block);
//add update_block to main queue

dispatch_apply(i, some_queue, work_block)
//add work_block to some_queue i times

dispatch_sync(background_queue, blocking_block)
//add blocking block to background queue and wait for completion

キューを使用する一般的な例

次のコードは、キューの使用例です。

dispatch_async(background_queue, ^ {
  //Perform code that takes long time, here.
   Dispatch_async(dispatch_get_main_queue(), ^ {
     //Some other task, generally UI.
   });
});

これが同時実行制御で行うことです。これは、中間iOS開発者になるまでの十分な情報です。

学んだ概念を実践し続け、要件に応じてそれらを修正および統合してください。