iOS--多线程-GCD

ViewController.m#

//
//  ViewController.m
//  多线程-GCD
//
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
//======================== GCD ===========================
//子线程
    
    dispatch_queue_t queue = dispatch_queue_create("test", NULL);
    
    dispatch_async(queue, ^{//子线程调用的Block
        for (int i = 0; i < 50; i ++) {
            NSLog(@"子线程:%d", i);
        }
      //返回主线程执行,主线程调用此Block
        dispatch_sync(dispatch_get_main_queue(), ^{//主线程调用的Block
            
            if ([NSThread isMainThread]) {
                NSLog(@"是主线程");
            }
        });
        
        
        
    });
    
    
    
    
    
    
//主线程:
    
    for (int i = 0; i < 50; i ++) {
        NSLog(@"主线程:%d", i);
    }
    
    
    
}


/*
 //
 /////dispatch_sync(),同步添加操作。他是等待添加进队列里面的操作完成之后再继续执行。
 
 dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
 NSLog(@"1");
 dispatch_sync(concurrentQueue, ^(){
 NSLog(@"2");
 [NSThread sleepForTimeInterval:10];
 NSLog(@"3");
 });
 NSLog(@"4");
 输出 :
 
 11:36:25.313 GCDSeTest[544:303] 1
 11:36:25.313 GCDSeTest[544:303] 2
 11:36:30.313 GCDSeTest[544:303] 3//模拟长时间操作
 11:36:30.314 GCDSeTest[544:303] 4
 
 //
 /////dispatch_async ,异步添加进任务队列,它不会做任何等待
 
 dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
 NSLog(@"1");
 dispatch_async(concurrentQueue, ^(){
 NSLog(@"2");
 [NSThread sleepForTimeInterval:5];
 NSLog(@"3");
 });
 NSLog(@"4");
 输出:
 11:42:43.820 GCDSeTest[568:303] 1
 11:42:43.820 GCDSeTest[568:303] 4
 11:42:43.820 GCDSeTest[568:1003] 2
 11:42:48.821 GCDSeTest[568:1003] 3//模拟长时间操作时间
 */

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 什么是GCD全称是Grand Central Dispatch,可译为“伟大的中枢调度器”纯C语言,提供了非...
    沉梦昂志__阅读 205评论 0 0
  • 1.GCD简介GCD是苹果开发的一个多核线程的解决方法,GCD和其它的多线程技术方案想比,使用起来更加简单和方便....
    ZhongXi阅读 4,950评论 2 26
  • Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。 dispatc...
    在这蓝色天空下阅读 709评论 0 3
  • 宝贝,生日快乐! 在与这个于你而言,充满了新鲜的,有趣的,美好的万物的世界相处了1095天之后,你迎来了你的第三个...
    Susie浩阅读 1,028评论 0 0
  • 很多时候我们感到迷茫 明明是脑子饥饿了 却总是习惯于把肚子填满。 午安!
    婷婷fly阅读 266评论 0 0