技术贴:1.初识多线程

一个进程必须要有一条线程,多个任务一个线程处理叫做串行,多个任务多个线程处理叫做并行,看似并行,其实原则上还是在按顺序运行,只是中间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性能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 1,848评论 0 17
  • 多线程基本概念 单核CPU,同一时间cpu只能处理1个线程,只有1个线程在执行 。多线程同时执行:是CPU快速的在...
    WeiHing阅读 731评论 1 5
  • 多线程 在iOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行,iOS系统进程默认启动一个主线程,用...
    郭豪豪阅读 2,637评论 0 4
  • 一年了 没有人懂我是怎么度过的 默默的过 好像我的生活都停滞了 我能感受到时间在过 却觉得自己没有改变 爱你
    思思有片海阅读 311评论 0 0
  • 红杉中国周逵:我们从这四个方面来判断一个项目 |捕手志 题图:红杉资本中国基金合伙人 周逵先生 ■按: 前两天,有...
    汝阴龙阅读 335评论 0 0