技术贴:1.初识多线程

作者: Xcode10 | 来源:发表于2016-06-29 21:17 被阅读124次

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

相关文章

  • 技术贴:1.初识多线程

    一个进程必须要有一条线程,多个任务一个线程处理叫做串行,多个任务多个线程处理叫做并行,看似并行,其实原则上还是在按...

  • Day18-多线程

    1.多线程技术1 2.多线程技术2 3.多线程技术 4.join函数

  • 多线程之 1.初识多线程

    1.1线程&进程 进程:就是应用程序在内存中分配的空间,(正在运行中的程序),一个进程可以包含多个线程。线程:是进...

  • GCD技术

    初识GCD 在我们平时的OC开发中经常需要用到多线程编程,而GCD这项技术是最受开发者喜爱的多线程技术,我们今天就...

  • 1.初识Java多线程

    1.进程、线程、多线程的区别 进程: 进程(process),是计算机中已运行程序的实体。 线程: 线程(thre...

  • 多线程

    1.多线程技术01

  • OC语法_多线程

    1. 多线程实现原理; 2. 多线程实现的方案; 3. 线程同步技术; 1. 多线程实现原理; - 进程:...

  • 技术贴:2.初识GCD

    GCD全程Grand Central Dispatch 摒弃掉了线程中复杂的创建线程和开启线程的繁琐。只需要关注最...

  • Day18 多线程

    01.多线程技术1 02.多线程技术2 03.多线程应用 04.join 函数 耗时操作 1.耗时操作放到主线程中...

  • iOS - 多线程(一):初识

    iOS - 多线程 系列文章 iOS - 多线程(一):初识iOS - 多线程(二):pthread、NSThre...

网友评论

本文标题:技术贴:1.初识多线程

本文链接:https://www.haomeiwen.com/subject/ytcadttx.html