• 线程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]);*/
     /********************************************************/
        
  • 相关阅读:
    python基础之入门
    C#直接删除指定目录下的所有文件及文件夹(保留目录)
    删除Oracle文件、注册表
    WinRAR 激活码(KEY)
    用C#读取txt文件的方法(转)
    c# 生成 xml 文件
    Asp.Net 文件下载1——流下载(适用于大文件且防盗链)(转)
    Asp.Net异常:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"的解决方法
    响应在此上下文中不可用 asp.net
    Ajax实现局部刷新
  • 原文地址:https://www.cnblogs.com/sunjianfei/p/5725048.html
Copyright © 2020-2023  润新知