/******************************************************/
同步函式
(1)併發佇列:不會開執行緒
(2)序列佇列:不會開執行緒
非同步函式
(1)併發佇列:能開啟N條執行緒
(2)序列佇列:開啟1條執行緒
/*******************************************************/
/*****************用非同步函式往併發佇列中新增任務********************/ /* //可以建立多個子執行緒 //1.獲得全域性的併發佇列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //2.新增任務到佇列中,就可以執行任務 //非同步函式:具備開啟新執行緒的能力 dispatch_async(queue, ^{ NSLog(@"下載圖片1----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"下載圖片2----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"下載圖片3----%@",[NSThread currentThread]); }); //列印主執行緒 NSLog(@"主執行緒----%@",[NSThread mainThread]); */ /*****************用非同步函式往序列佇列中新增任務*******************/ //會開啟子執行緒,但只會開啟一個; //列印主執行緒 NSLog(@"主執行緒----%@",[NSThread mainThread]); //建立序列佇列 dispatch_queue_t queue=dispatch_queue_create("name", NULL); //第一個引數為序列佇列的名稱,是c語言的字串 //第二個引數為佇列的屬性,一般來說序列佇列不需要賦值任何屬性,所以通常傳空值(NULL) //2.新增任務到佇列中執行 dispatch_async(queue, ^{ NSLog(@"圖片1----%@",[NSThread currentThread]); NSLog(@"圖片2----%@",[NSThread currentThread]); NSLog(@"圖片3----%@",[NSThread currentThread]); }); //NSLog(@"主執行緒----%@",[NSThread mainThread]); //3.釋放資源 // dispatch_release(queue); /*****************用同步函式往併發佇列中新增任務*******************/ /* //不會建立子執行緒; dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_sync(queue, ^{ NSLog(@"image1---%@",[NSThread currentThread]); NSLog(@"image2---%@",[NSThread currentThread]); NSLog(@"image3---%@",[NSThread currentThread]); }); NSLog(@"mainThread%@",[NSThread mainThread]); */ /*****************用同步函式往序列佇列中新增任務*******************/ /* //不會建立子執行緒; dispatch_queue_t queue=dispatch_queue_create("name", NULL); dispatch_sync(queue, ^{ NSLog(@"image1%@",[NSThread currentThread]); NSLog(@"image2%@",[NSThread currentThread]); NSLog(@"image3%@",[NSThread currentThread]); }); NSLog(@"mainThread%@",[NSThread mainThread]);*/ /********************************************************/