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]);*/
     /********************************************************/
        
  • 相关阅读:
    Oracle中字符串连接的实现方法
    Could not Open Install.Log File解决方法
    重新注册IIS
    Sqlserver 语法总结
    无法向会话状态服务器发出会话状态请求
    Windows Live Writer发布测试
    IIS不支持apk文件下载
    “未能加载文件或程序集“×××”或它的某一个依赖项。试图加载格式不正确的程序”问题的解决
    IIS安装
    Eclipse运行内存溢出
  • 原文地址:https://www.cnblogs.com/sunjianfei/p/5725048.html
Copyright © 2011-2022 走看看