zoukankan      html  css  js  c++  java
  • 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 }


    下面的代码可以取代上面的代码块
  • 相关阅读:
    HDU2795Biliboard
    Choose and Divide UVa10375 题解
    NKOJ2322: OSU!
    Git学习笔记(0)
    NKOJ2317 英语四六级考试
    NKOJ2321 东方project
    NKOJ2319 奇怪的班级 题解
    两点之间最短路径:弗洛伊德算法
    poj2524 Ubiquitous Religions
    SAP PA 共享 免费下载
  • 原文地址:https://www.cnblogs.com/adodo/p/5193421.html
Copyright © 2011-2022 走看看