设为首页 加入收藏

TOP

iOS进阶学习-多线程(三)
2017-10-13 10:33:08 】 浏览:4196
Tags:iOS 进阶 学习 线程
后执行的
"); });
   dispatch_barrier_async(queue, ^{
        NSLog(@"我执行了");
    });
  • dispatch_once(),不仅意味着代码仅会被运行一次,而且还是线程安全的,这就意味着你不需要使用诸如@synchronized之类的来防止使用多个线程或者队列时不同步的问题。
  • 通过GCD创建单例
+ (MyHandle *)sharedMyHandle
{
    // 在GCD中只执行一次,用于记录内容是否执行过
    static dispatch_once_t onceToken;
    // 保证多线程并发执行时只执行一次
    dispatch_once(&onceToken, ^{
        handle = [[MyHandle alloc] init];
    });
    return handle;
}
  • dispatch_sync()   //将任务添加到队列中,block不执行完,下面代码不会执行
  • async和sync的区别:
// async 不等 block 体执行完。。就去执行下面的代码
// sync会等待 block 体执行完成之后,才会去执行 block 体外面的代码
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_sync(queue, ^{
        NSLog(@"第一个任务");
    });
    NSLog(@"呵呵");
    dispatch_sync(queue, ^{
        NSLog(@"第二个任务");
    });
    NSLog(@"哈哈");
  • dispatch_async_f()  //将任务添加到队列中,任务是函数非block
// 函数
void function(void * str){
    NSLog(@"这是一个函数,%s",str);
}

// 第一个参数:队列
// 第二个参数:函数参数的内容
// 第三个参数:函数
dispatch_queue_t queue  = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async_f(queue, @"passValue", function);

 

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇UIWebView加载本地html文件 下一篇【代码笔记】iOS-清除图片缓存UIA..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目