标签:
/******************************************************/
同步函数
(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]);*/ /********************************************************/
标签:
原文地址:http://www.cnblogs.com/sunjianfei/p/5725048.html