iOS开发之GCD(1)初探

来源:互联网 发布:淘宝助理批量宝贝描述 编辑:程序博客网 时间:2024/05/29 18:12

概念:

GCD即Grand Central Dispatch,它是异步执行任务的技术之一。一般将应用程序中技术的线程管理用的代码在系统层级上实现。开发者只需要将定义好的任务追加到dispatch queue中,GCD就能生成必要的线程并按计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以统一管理,也可执行任务,相较于以前的多线程管理更加有效率。


实例:

        dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create(NULL, NULL);                        dispatch_async(mySerialDispatchQueue, ^{           //执行长时间的处理            //图像识别            //数据库读取            dispatch_async(dispatch_get_main_queue(), ^{                //用户界面更新            });                                });

什么是线程:

1个cpu执行cpu命令列为一条无分叉的路径。


什么是多线程:

虽然1个cpu执行cpu命令列为一条无分叉的路径。但是一个物理cpu芯片上可能会有多个cpu(多核),一个执行命令的cpu也可能虚拟化出多个核心,这就使得计算机可以实现多线程处理。甚至当计算机只有一个cpu的时候也能够通过调度(保存当前执行路径的状态到专用内存区块,然后切换执行路径)使得看上去像是一个cpu同时执行多个命令列,这被成为上下文切换。


多线程编程容易遇到的问题:

利用多线程特性编程的技术,我们称之为多线程编程。

(1)数据竞争-多个线程更新相同的资源导致数据的不一致。

(2)死锁-停止等待时间的线程会导致多个线程相互持续等待

(3)内存不足-不合理生成线程,导致大量的内存消耗

0 0
原创粉丝点击