iOS多线程

来源:互联网 发布:西安西科软件 编辑:程序博客网 时间:2024/06/08 03:53

增:

在计算机编程中,一个基本的概念就是同时对多个任务加以控制。许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径达到这个目的。

多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。

线程是在同一时间需要完成多项任务的时候实现的。


1. 什么是多线程?

    在理解多线程的时候,最好是将线程与进程一起进行比较和理解。

    1.1 进程 

  • 进程是指在系统中正在运行的一个应用程序。

  • 每个进程之间都是独立的,它们均运行在其专用且受保护的内存空间中(一个应用程序启动后,系统会先启动一个进程,放入内存中运行)。

    1.2 线程

  • 进程本身是不能执行任务的,进程想要执行任务必须得有线程,只有线程才能执行任务,所以在进程启动运行的时候会创建一条默认的线程(即主线程)。

  • 一个进程中可以有多条线程(每个进程至少要有一条主线程,可以有多条子线程),线程是CPU执行任务的基本单位,进程的所有任务都是在线程中执行的。

  • 线程是串行(一个一个的执行)执行任务的,也就是说线程在同一时间内只能执行一个任务,处理完之后才能处理下一个任务。

    1.3 线程与进程之间的区别

  • 线程是CPU执行任务的基本单位

  • 进程是CPU分配资源单位

  • 一个程序可以对应多个进程;一个进程可以有多条线程,但至少有一个线程

  • 同一个进程内的线程共享进程里的资源

    1.4 多线程

  • 多线程,就是在一个进程中开启了多条线程,它可以同时执行不同的任务,但其实并不是同时,而是CPU在各条线程之间快速来回切换而已,本质上还是只有1条线程在执行任务。

  • 执行原理

    1.同一时间内,CPU只能处理一条线程,只有一条线程在工作。

    2.多线程并行执行,其实就是CPU在不同线程之间快速的调度。如果CPU调度线程的时间足够快,就导致了并行执行的假象。

  • 优点

    1. 可以适当提高程序执行效率。

    2.能适当提高资源利用率(CPU,内存):使用多线程能把处在闲时的CPU和内存充分利用起来,提高程序的执行效率;多线程编程是防止主线程堵塞,增加系统效率的最佳方法

  • 缺点

    1.创建线程是有开销的。在iOS中主要成本有:1)线程的创建时间大概是90毫秒;2)内核数据结构(大概1KB);3)栈空间:主线程1MB;子线程512KB;也可以使用 -setStackSize 来设置线程栈空间的大小,但必须是4的倍数,最低16K。

    2.如果开启大量线程的话,或许会适得其反降低程序执行效率:1)占用大量的内存,导致程序性能降低;2)线程一多的话,CPU在线程之间的调度上开销就越大;3)每条线程的调度次数会降低。

    3.线程一多的话,会让程序设计变得更加复杂,比如线程之间的通信,多线程之间的数据共享等。


2. 什么时候要使用多线程?

  • 程序在启动之后,会默认创建一条线程,称为主线程UI线程

  • 主线程的作用:

    1.显示和刷新UI界面用途

    2.处理UI事件

  • 除去主线程之外的线程就是子线程,也叫后台线程。

  • 子线程的作用:

    1. 耗时操作尽量放到子线程中处理

  • 使用注意:

    1.和UI相关的刷新操作必须放到主线程中进行处理

    2.别将耗时的操作放入主线程内:耗时操作会将主线程阻塞,无法处理用户产生的事件,会给用户一种卡顿的感觉



参考资料:

iOS基础

iOS多线程-多线程简介

多线程基础  


0 0
原创粉丝点击