• iOS学习笔记5GCD smallelephant_A


    ---恢复内容开始---

    直接上代码

    一,异步函数往并发队列中添加任务

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

        dispatch_async(queue, ^{

            NSLog(@"下载图片。。。%@",[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("dusunan", NULL);

        dispatch_async(queue, ^{

            NSLog(@"下载图片1----%@",[NSThread currentThread]);

        });

        dispatch_async(queue, ^{

            NSLog(@"下载图片2----%@",[NSThread currentThread]);

        });

        

        dispatch_async(queue, ^{

            NSLog(@"下载图片3----%@",[NSThread currentThread]);

        });

     此种方法会开启线程,但是只会开启一个线程

    三,用异步函数往并发队列中添加任务

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

        

        

        

        dispatch_sync(queue, ^{

            NSLog(@"下载图片1 %@",[NSThread currentThread]);

        });

        dispatch_sync(queue, ^{

            NSLog(@"下载图片2 %@",[NSThread currentThread]);

        });

        dispatch_sync(queue, ^{

            NSLog(@"下载图片3 %@",[NSThread currentThread]);

        });

     四,同步函数往串行队列中添加任务

     dispatch_queue_t queue = dispatch_queue_create("dusunan", NULL);

        

        dispatch_sync(queue, ^{

            NSLog(@"下载图片1 %@",[NSThread currentThread]);

        });

        dispatch_sync(queue, ^{

            NSLog(@"下载图片2 %@",[NSThread currentThread]);

        });

        dispatch_sync(queue, ^{

            NSLog(@"下载图片3 %@",[NSThread currentThread]);

        });

        

     五,应用

    (1)一次性代码 

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    18 {
    19     if (_log==NO) {
    20         NSLog(@"该行代码只执行一次");
    21         _log=YES;
    22     }
    23 }



    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    26 {
    27     static dispatch_once_t onceToken;
    28     dispatch_once(&onceToken, ^{
    29         NSLog(@"该行代码只执行一次");
    30     });
    31 }


    下面的代码可以取代上面的代码块
  • 相关阅读:
    VS2015生成64位dll文件
    gdb简单调试~core文件
    Ubuntu ENet 的下载和编译
    Android LIstView初次创建getview方法执行多次问题
    android ipc通信机制之之三,进程通讯方式。
    Android Stduio统计项目的代码行数
    Android开发遇到的坑(1):Java中List的安全删除问题
    Android Studio修改项目的包名
    类似IOS的滑动返回上一级,SwipeBackLayout-android的滑动返回类库
    [转]理解RESTful架构
  • 原文地址:https://www.cnblogs.com/adodo/p/5193421.html
Copyright © 2020-2023  润新知