现在的位置: 首页 > 综合 > 正文

IOS 多线程 GCD

2013年12月04日 ⁄ 综合 ⁄ 共 1215字 ⁄ 字号 评论关闭

    __block UIImage *img;//如果是局部变量 需要加__block
    //新建一个 serial queue
myQueue

    dispatch_queue_t myQueue=dispatch_queue_create("downloadImge", NULL);
    //
    dispatch_async(myQueue, ^{
        //加载图片
    img=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]]];
        //模拟加载
    });
    //等加载完成后才能显示图片 block 执行有先后顺序
    dispatch_async(myQueue, ^{
        self.imgView.image=img;
    });

  

一些说明 

    // concurrent block 执行没有先后顺序
    dispatch_queue_t myQueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(myQueue, ^{
        for(int i=0;i<100;i++)
    {
        NSLog(@"hello 1");
    }});
    dispatch_async(myQueue, ^{
        for(int i=0;i<100;i++)
        {
            NSLog(@"hello 2");
        }});
    dispatch_async(myQueue, ^{
        for(int i=0;i<100;i++)
        {
            NSLog(@"hello 3");
        }});
    
    // FIFO serial... block 执行有先后顺序
    dispatch_queue_t myQueue=dispatch_queue_create("myQueue", NULL);
    dispatch_async(myQueue, ^{
        for(int i=0;i<100;i++)
        {
            NSLog(@"hello 1");
        }});
    dispatch_async(myQueue, ^{
        for(int i=0;i<100;i++)
        {
            NSLog(@"hello 2");
        }});
    dispatch_async(myQueue, ^{
        for(int i=0;i<100;i++)
        {
            NSLog(@"hello 3");
        }});
    

抱歉!评论已关闭.