美文网首页
GCD学习 dispatch_apply

GCD学习 dispatch_apply

作者: LiuTianXiang | 来源:发表于2017-07-07 15:31 被阅读759次

dispathc_apply 是dispatch_sync 和dispatch_group的关联API.

它以指定的次数将指定的Block加入到指定的队列中。并等待队列中操作全部完成.

    NSArray *array = [NSArray arrayWithObjects:@"/Users/chentao/Desktop/copy_res/gelato.ds",
                      @"/Users/chentao/Desktop/copy_res/jason.ds",
                      @"/Users/chentao/Desktop/copy_res/jikejunyi.ds",
                      @"/Users/chentao/Desktop/copy_res/molly.ds",
                      @"/Users/chentao/Desktop/copy_res/zhangdachuan.ds",
                      
                      nil];
    
    NSString *copyDes = @"/Users/chentao/Desktop/copy_des";
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    dispatch_async(dispatch_get_global_queue(0, 0), ^(){
        
        dispatch_apply([array count], dispatch_get_global_queue(0, 0), ^(size_t index){
           
            NSLog(@"copy-%ld", index);
            NSString *sourcePath = [array objectAtIndex:index];
            
            NSString *desPath = [NSString stringWithFormat:@"%@/%@", copyDes, [sourcePath lastPathComponent]];
            
            [fileManager copyItemAtPath:sourcePath toPath:desPath error:nil];
            
        });
        
        NSLog(@"done");
        
    });

输出 copy-index 顺序不确定,因为它是并行执行的

(dispatch_get_global_queue是并行队列),但是done是在以上拷贝操作完成后才会执行,因此,它一般都是放在dispatch_async里面(异步)。实际上,这里 dispatch_apply如果换成串行队列上,则会依次输出index,但这样违背了我们想并行提高执行效率的初衷

相关文章

  • GCD

    GCD之dispatch_apply dispatch_apply的作用是快速迭代 dispatch_apply替...

  • GCD学习(七) dispatch_apply

    GCD学习(七) dispatch_apply dispathc_apply 是dispatch_sync 和di...

  • GCD 队列组 常用函数

    队列组 GCD : dispatch_barrier_async GCD : dispatch_apply G...

  • GCD学习 dispatch_apply

    dispathc_apply 是dispatch_sync 和dispatch_group的关联API. 它以指定...

  • GCD学习 dispatch_apply

    dispathc_apply 是dispatch_sync 和dispatch_group的关联API. 它以指定...

  • GCD相关方法

    1.gcd栅栏函数 2.gcd快速迭代方法(dispatch_apply)同for循环做比较。 案例:将文件夹fr...

  • GCD ⑦ dispatch_apply

    dispatch_apply(批量处理) dispatch_apply 函数按指定的次数将指定的 Block 追加...

  • GCD之dispatch_apply

    dispatch_apply该函数按指定的次数将指定的block追加到指定的dispatch queue中,并等待...

  • GCD(五)-dispatch_apply

    这个函数很有意思.文档注释解释说:Submits a block to a dispatch queue for ...

  • GCD中dispatch_apply使用

    dispatch_apply使用说明 dispatch_apply类似一个for循环,会在指定的dispatch ...

网友评论

      本文标题:GCD学习 dispatch_apply

      本文链接:https://www.haomeiwen.com/subject/svzlhxtx.html