线程,是进程的一个具体实例.

     程序运行的最小单位,是被系统独立调度和CPU的基本运行单元.

     进程是操作系统中可以并行工作的基本单元。

     一个应用程序有一个进程,一个进程中至少有一个线程.

     进程和线程的主要差别在于它们是不同的操作系统资源管理方式。

     进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。

      线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。

      但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程 


2.谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?

     在一个进程中有多个线程共同存在,每个线程执行各自的任务,相互之间不会干扰,一个线程可以创建或者撤销其他的线程.

     让一个进程可以同时执行很多任务.这就减少了等待时间,提高了进程的运行效率.但是多线程会耗费资源,并且由于一个线程死掉会造成整个进程死掉.多线程也容易造成安全性问题.

有三种

      第一种,使用@synchronized(self)

      第二种,使用GCD

      第三种,使用NSOperationQueue

3.线程同步和异步的区别?IOS中如何实现多线程的同步?

   线程同步,是指多个线程同时操作或者说访问一个资源(数据)。这时候需要对数据添加保护,这个保护就是线程的同步。

特点:等待资源访问结束,浪费时间。效率低,串行执行任务。

线程异步:访问资源时,在空闲等待的是时候,同时访问其他资源,实现多线程机制,并行执行任务。

实现多线程同步:

使用GCD的主队列。使用NSOperationQueue ,把最大线程数设为1

用GCD中的串行队列来解释多线程的同步,也就是队列中得任务为串行.他们各自相邻的任务有依赖性,如果任务1不完成,那么任务2就不会开始,这就是同步。


4.获取一台设备唯一标识的方法有哪些?

1.UDID

2.UUID

3.MAC ADDRESS

4.OPEN UDID

5.广告标示符

6.Vindor 标示符

iOS7之后用得是keychain(钥匙串)