二十五,iOS GCD的使用

来源:互联网 发布:网络教育学籍查询 编辑:程序博客网 时间:2024/05/24 02:38

      GCD全称 Grand Central Dispatch ;
    是iOS中对多线程处理的方法之一(其他NSThread,NSOperationQueue,NSInvocationOperation)

   iOS系统对GCD的的使用方法大概有以下五种;

1.主线程执行

 dispatch_async(dispatch_get_main_queue(), ^{
    });

2.后台执行

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    });

3.延迟执行

double deleInseconds = 4.0;
        /*
         延迟更新 要用秒 乘以 NSEC_PER_SEC 宏定义如下
         #define NSEC_PER_SEC 1000000000ull
         #define NSEC_PER_MSEC 1000000ull
         #define USEC_PER_SEC 1000000ull
         #define NSEC_PER_USEC 1000ull
         */
        dispatch_time_t poptime = dispatch_time(DISPATCH_TIME_NOW, deleInseconds * NSEC_PER_SEC);
        dispatch_after(poptime, dispatch_get_main_queue(), ^{
         
        });

4.只执行一次

 static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
   
    });

5. 并行执行,并汇总

 dispatch_group_t group = dispatch_group_create();
    //并行执行线程一
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"1000====%@",[NSDate date]);
        sleep(100);
        string = @"10";
    });
    //并行执行线程二
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        number = @"5";
        NSLog(@"5=======%@",[NSDate date]);
    });
    //汇总结果
    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"------------- %f",string.floatValue + number.floatValue);
    });


具体代码参考github地址 :

https://github.com/wang6177ming123/GCDBlock

1 0