zoukankan      html  css  js  c++  java
  • 线程5--GCD简介

    /******************************************************/
     
     同步函数
     
     (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]);*/
     /********************************************************/
        
  • 相关阅读:
    css圆,背景,img填满等样式
    MySQL双日志
    MySQL分层和查询数据的流程
    ZJNU 2345
    ZJNU 2342
    ZJNU 2340/2341/2343
    ZJNU 2235
    ZJNU 2226
    ZJNU 2212
    ZJNU 2208
  • 原文地址:https://www.cnblogs.com/sunjianfei/p/5725048.html
Copyright © 2011-2022 走看看