iOS开发之多线程浅析

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

基本概念

程序

由源代码生成的可执行应用.

进程

进程是程序本身,一个正在运行的程序可以看做是一个进程.

线程

线程是程序独立运行的代码段.

单线程概述

每个正在运行的程序(即进程)至少包含一个线程,这个线程是主线程.
主线程在程序启动时被创建,用于执行main函数.
只有一个主线程的程序被称为单线程程序.主线程负责执行程序所有的代码(UI刷新,网络请求,数据加载),这些代码只能顺序执行,不能并发执行.

多线程概述

拥有多个线程的程序被称为多线程程序.
iOS允许用户自己开辟线程,相对于主线程而言,这些线程被称为子线程.
子线程与主线程都是独立运行的单元,相互不影响,所以可以并发执行.

单线程&多线程区别

单线程程序只有一个线程,所以代码顺序执行,容易出现代码阻塞(页面假死)等状态.
多线程程序各个线程独立执行,能有效避免代码阻塞,并提高程序运行性能.
注意:UI添加和刷新必须在主线程执行.

多线程实现种类

NSThread
NSOperationQueue
NSObject
GCD

多线程优点

  • 使用多线程可以把程序中占用时间长的任务放到后台去执行,如视屏,下载等.

  • 能够发挥多核处理器的优势,并发执行让系统运行的更快,更流畅,用户体验更好.

多线程缺点

  • 更多的线程需要更多的内存空间.

  • 当多个线程争夺一个资源的时候要注意安全的问题

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


线程同步是指一个线程的执行要等上一个线程执行完毕才可以执行.
线程异步是指多个线程可以同时执行.
GCD可以实现线程同步,NSOperationQueue设置Operation个数来实现多线程同步.

    原文作者:Baaaan
    原文地址: https://segmentfault.com/a/1190000003910655
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞