執行緒5--GCD簡介

有稜角的圓發表於2016-08-01

/******************************************************/
 
 同步函式
 
 (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]);*/
 /********************************************************/
    

 

相關文章