iOS 开发每天分享优质文章

OC底层知识(十一) : 多线程

2018-10-25  本文已影响166人  IIronMan
一、简介:多线程在之前进行过一篇详细的基础博客 iOS多线程
二、多线程的基础知识回顾
技术方案 简介 语言 线程生命周期 使用频率
pthread 一套通用的多线程API;适用于Unix\Linux\Windows等系统;跨平台\可移植;使用难度大 C语言 程序员管理 几乎不用
NSThread 使用更加面向对象;简单易用,可直接操作线程对象 OC 程序员管理 偶尔使用
GCD 旨在替代NSThread等线程技术;充分利用设备的多核 C 自动管理 经常使用
NSOperation 基于GCD(底层是GCD);比GCD多了一些更简单实用的功能;使用更加面向对象 OC 自动管理 经常使用
三、多线程 GCD 队列组:notify(唤醒)
 // 创建队列组
dispatch_group_t group = dispatch_group_create();
// 创建并发队列
dispatch_queue_t queue = dispatch_queue_create("my_queue", DISPATCH_QUEUE_CONCURRENT);

// 添加异步任务
dispatch_group_async(group, queue, ^{
    for (int i = 0; i < 5; i++) {
        NSLog(@"任务1-%@", [NSThread currentThread]);
    }
});

dispatch_group_async(group, queue, ^{
    for (int i = 0; i < 5; i++) {
        NSLog(@"任务2-%@", [NSThread currentThread]);
    }
});

下面使用唤醒代码(和上面的代码是连着的)

// 等前面的任务执行完毕后,会自动执行这个任务
dispatch_group_notify(group, queue, ^{
   // async 异步,dispatch_get_main_queue() 主线程
   dispatch_async(dispatch_get_main_queue(), ^{
        for (int i = 0; i < 5; i++) {
             NSLog(@"任务3-%@", [NSThread currentThread]);
        }
   });
});
四、多线程安全隐患: 常见的是 买票存钱取钱
多线程安全隐患的解决方案(枷锁)
五、iOS中的线程同步方案(下面锁的调用都在 ThreadLockViewController里面,锁的封装在JKBaseCode):锁使用的demo
六、iOS中的读写安全方案
上一篇下一篇

猜你喜欢

热点阅读