IOS8-线程概念

(一)什么是线程

 1.每个进程必须有一个线程

 2.线程是进程的基本执行单元,一个进程的所有任务都在线程中执行

(二)线程的串行

 1个线程中的任务的执行是顺序执行(串行)

也就是说在同一个时间,1个线程只能执行1个任务。

(三)什么是多线程

1个进程可以开启多条线程,每条线程可以(同时)执行不同的任务。

多线程可以提高程序的运行效率

(四)多线程的原理

同一个时间,cpu只能处理一个线程,即只有一个线程正在工作。

多线程并发执行时,其实是cpu快速的在多条线程之间进行调度。

如果cpu调度时间足够快,就造成了多线程并发执行的假象

如果线程非常非常多,会发生什么情况?

(1)CPU会在N个线程间调度,会消耗大量cpu资源

(2)每条线程被调度的频次会降低。


(五)多线程的优缺点

多线程优点

(1)能够提高程序的执行效率

(2)能适当提高资源利用率(cpu,内存利用率)

多线程缺点:

(1)开启线程需要占用一定的内存空间,(默认情况下,主线程1M,子线程512kb)如果开启大量的线程,会占用大量内存

(2)线程越多,cpu在调度上开销很大

(3)程序设计起来更复杂:比如线程间通信,多线程的数据共享。

(六)什么是主线程

一个ios程序运行时,默认会开始一个线程,成为主线程 或 UI线程

主线程的作用:

(1)显示/刷新UI界面

(2)处理UI事件 (比如点击事件,滚动事件,拖拽事件)

主线程的使用注意:

注意:不要把耗时的操作放到主线程

(七)线程类NSThread

 

获取当前线程 [NSThread currentThread]

把printsome放到子线程中执行
[self performSelectorInBackground:@selector(printsome) withObject:nil   ];

- (void)printsome
{
    for (int i=0; i <20000; i++) {
        NSLog(@" %d %@",i,[NSThread currentThread]);
    }
}


(八)IOS多线程解决方案

IOS8-线程概念_第1张图片

你可能感兴趣的:(IOS8-线程概念)