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]);*/
     /********************************************************/
        
  • 相关阅读:
    js搜索输入关键词
    pc端,自适应屏幕分辨率
    js获取锚点名称 #
    yourphp读取分类名称{$Categorys[$r[catid]]['catname']}
    收缩菜单 css变样
    ajax成功跨域_自己写的
    json 是个什么东西?
    json_encode详解,转义
    跨域代码 手机号码
    php json_decode
  • 原文地址:https://www.cnblogs.com/sunjianfei/p/5725048.html
Copyright © 2011-2022 走看看