串行并行异步同步的概念很容易让人混淆,关于这几个概念我在第一篇GCD中有解释,但是还不够清晰,所以这里重写一篇博客专门对这几个概念进行区分: 先说一下队列和任务: (1)队列分为串行和并行,任务的执行分为同步和异步,异步是多线程的代名词,异步在实际引用中会开启新的线程,执行耗时操作。 (2)队列只是 ...
分类:
移动开发 时间:
2017-03-01 14:03:44
阅读次数:
214
同步:代码依次执行,一个人执行多个任务,也是依次执行。一个人在同一时间只执行一个任务 异步:可以同时执行多个任务 进程:指在系统中运行的应用程序,每个进程都是独立的,都有独立的且安全的运行空间 线程:一个进程可以有多个线程,但只有一个主线程。进程的任务都是在线程里面完成的。 进程,线程与多线程之间的 ...
分类:
移动开发 时间:
2017-02-12 18:31:30
阅读次数:
200
NSThread是相对GCD和NSOperationQuene而言,比较轻量级的一种多线程处理方式。 但同时,它的弊端就是需要自己管理线程的生命周期,以及线程同步;而另外两种不需要自己管理。 常见方法介绍: 一、获取当前线程 二、获取主线程 三、NSThread的创建 .静态方法 执行完上面代码后会 ...
分类:
移动开发 时间:
2017-01-21 10:41:01
阅读次数:
266
iOS多线程安全的概念在很多地方都会遇到,为什么不安全,不安全又该怎么去定义,其实是个值得深究的话题。 共享状态,多线程共同访问某个对象的property,在iOS编程里是很普遍的使用场景,我们就从Property的多线程安全说起。 Property 当我们讨论property多线程安全的时候,很多 ...
分类:
移动开发 时间:
2016-12-11 07:55:45
阅读次数:
236
谈到iOS多线程,一般都会谈到四种方式:pthread、NSThread、GCD和NSOperation。其中,苹果推荐也是我们最经常使用的无疑是GCD。对于身为开发者的我们来说,并发一直都很棘手,如果对GCD的理解不够透彻,那么iOS开发的历程绝对不会顺利。这里,我会从几个角度浅谈我对GCD的理解 ...
分类:
其他好文 时间:
2016-11-17 13:54:16
阅读次数:
252
一、iOS多线程 iOS在每个进程启动后都会创建一个主线程,更新UI要在主线程上,所以也称为UI线程,是其他线程的父线程。 线程(thread):用于指代独立执行的代码段。 进程(process):用于指代一个正在运行的可执行程序,它可以包含多个线程。 二、NSThread NSThreadhi轻量 ...
分类:
移动开发 时间:
2016-11-15 11:02:49
阅读次数:
240
多线程编程:下载数据时,开辟子线程,减少阻塞时间,和主线程并发运行,提升用户体验 1.Thread 1>新建Thread对象,带一selector方法,调用start方法,开启子线程 2>thread初始化自带的selector方法中请求数据 3>数据请回来后,调用self的performSelec ...
分类:
移动开发 时间:
2016-11-12 19:51:54
阅读次数:
270
这一段开发中一直在处理iOS多线程的问题,但是感觉知识太散了,所以就把iOS中多线程的知识点总结了一下. 1.基本概念 1)什么是进程?进程的特性是什么? 进程是指在系统中正在运行的一个应用程序. 特性: 每个进程之间都是独立的,每个进程都运行在其专用而且受保护的内存空间内. 2)什么是线程?线程和 ...
分类:
移动开发 时间:
2016-11-05 14:53:53
阅读次数:
204
上一篇文章我对GCD的几个基本概念做了介绍,但是大家看完了可能觉得对理解GCD并没有什么卵用。其实会用GCD其实很简单,只要记住两条就可以了。 1. 主队列里的任务必须在异步函数中执行。 主队列里的任务如果在同步函数中执行,就会造成死锁。什么是死锁?容我举例来说明。 看到没有,主队列里的任务没有执行 ...
分类:
移动开发 时间:
2016-10-31 21:23:56
阅读次数:
176
一、需要互斥的例子 在多线程环境中,无论哪个函数方法都可以在多线程中同时执行。但是,在使用共享变量时,或者在执行文件输出或者绘制图等的情况下,多线程同时执行就可能得到奇怪的结果。例如,使用整数全局变量totalNumber来累加处理的数据的个数,为了执行下面的加法计算,在多线程环境中执行该方法会得到 ...
分类:
移动开发 时间:
2016-10-17 13:52:10
阅读次数:
165