ios種GCD

2562 ワード

GCDはblockと密接につながっているので、まずblock(私が以前コレクションしていた文章を見ることができます)を理解したほうがいいです.GCDはCレベルの関数であり、これはCの関数ポインタをパラメータとして提供し、Cプログラマーを便利にすることを意味する.
まずGCDの使用を見てみましょう.
 
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

 
asyncは非同期で実行していることを示しています.blockはあなたがしなければならないことを表しています.queueはあなたが誰に任務を任せて処理しましたか.(asyncのほかにsync,delayがあり、本稿ではasyncを例に挙げる).
プログラムにマルチスレッドが用いられるのは、プログラムがデータを読み出し、UIを更新する必要があるためである.ユーザ体験を良好にするために、データの読み取り操作はバックグラウンドで実行する傾向があり、プライマリスレッドのブロックを回避する.GCDには3種類のqueueが処理されています.
1. Main queue:
名前の通りメインスレッドで実行され、dispatch_get_main_取得する.uiに関連するものはMain Queueを使用します.
2.Serial quque(private dispatch queue、dispatch_queue_tが一種)
1つのタスクを実行するたびに、複数を追加することができ、実行順序FIFO.通常は、プログラマが生成したものを指します.たとえば、次のようにします.
NSDate *da = [NSDate date];
NSString *daStr = [da description];
const char *queueName = [daStr UTF8String];
dispatch_queue_t myQueue = dispatch_queue_create(queueName, NULL);

3.Concurrent queue(global dispatch queue):
複数のタスクを同時に実行することができ、各タスクの開始時間はqueueが加わる順であり、終了する順はそれぞれのタスクに依存する.dispatch_の使用get_global_取得する.
GCDを使用するフレームワークを大体理解することができます
 
dispatch_async(getDataQueue,^{
    //    ,     ,  UI.
    dispatch_aysnc (mainQueue, ^{
    //UI           
};
}
)