iOS资料程序员iOS学习笔记

技术贴:1.初识多线程

2016-06-29  本文已影响124人  Xcode10

一个进程必须要有一条线程,多个任务一个线程处理叫做串行,多个任务多个线程处理叫做并行,看似并行,其实原则上还是在按顺序运行,只是中间CPU调度的时间非常短,才会认为是在并行。

多线程的优缺点

优点:能适当提高程序的执行效率,能适当的提高资源利用率(CPU、内存利用率)

缺点:1、创建线程是需要开销的,iOS下的主要成本包括:内核数据结构(大约1KB)、栈空间(子线程512KB,主线程1MB),创建线程需要大约90毫秒的时间。2、开启大量的线程会降低程序的性能。3、线程越多,CPU在调度线程上的开销越大。4、程序设计更加复杂(处理线程之间的通讯)。

线程注意:耗时的操作不能放在主线程。会卡住主线程,最轻微的会影响用户体验。

多线程实现方案:

pthread:通用的多线程API,C语言,线程生命周期由程序员手动管理。

NSThread:创建线程需要程序员管理其生命周期,OC语言

GCD:C语言,充分利用多核机制。自动管理生命周期。

NSOperation:OC,基于GCD,自动管理生命周期。

详细:

NSThread:创建与启动:直接alloc 然后start就OK

或者detachNewThread也行

隐式创建:performSelectorInBackground:

让线程进入睡眠状态:SleepForInterval:2;

让线程睡眠至指定时间:sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2];

线程安全:互斥锁:在A线程操作文件1之前,A先将文件1锁起来,等A操作完解锁之后,B再去操作文件1.

互斥锁:@synchronized(self)因为self是唯一对象

互斥锁的优缺点:能有效的防止多线程抢夺资源造成的数据安全问题。但是用互斥锁会消耗大量的CPU性能。

上一篇 下一篇

猜你喜欢

热点阅读