美文网首页
iOS多线程之概念篇

iOS多线程之概念篇

作者: 飘金 | 来源:发表于2017-06-21 15:34 被阅读0次

进程

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

  • 每个进程之间是独立的且均运行在其专用并受保护的内存空间内.

线程

线程是进程的基本执行单元,一个进程想要执行任务,必须得有线程(每一个进程必须至少有一个线程)

主线程

一个iOS程序运行后,默认会开启一条线程,该线程称为"主线程"或"UI线程".

主线程的作用

  • 显示/刷新UI界面

  • 处理UI事件(比如点击事件,滚动事件,拖拽事件等)

主线程的使用注意

不要将耗时的操作放置在主线程中,耗时操作会卡住主线程严重影响UI的流畅度,会给用户一种"卡"的感觉,体验效果不就好.

线程的串行

如果要在一个线程中执行多个任务,那么只能一个一个的按顺序执行这些任务,也就是说:在同一个时间内,一个线程中只能执行一个任务.

多线程

一个进程中可以开启多个线程,每个线程可以并行执行不同的任务.(多线程技术可以提高程序的执行效率)

多线程的原理

如果单核CPU(多核CPU的话那就是真*多线程)

  • 同一时间,CPU只能处理一条线程,只有一条线程在工作

  • 多线程并发执行时,其实是快速的在线程之间调度

  • 如果CPU调度线程的时间足够快,就会造成多条线程并发执行的假象

如果有很多很多线程

CPU会在多个线程之间调度,最终会导致 CPU累死,消耗大量的CPU资源,并且每条线程被调用执行的频率降低,导致线程的执行效率降低

多线程的优点

  • 能够适当的提高程序的执行效率

  • 能够适当提高资源的利用率(CPU,内存的利用率)

多线程的缺点

  • 开启线程需要占用一定的内存空间(iOS中默认情况下,主线程占用1 M,子线程占用512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性能

  • 线程越多,CPU在调度线程的开销就越大

  • 程序设计的更加复杂:比如线程之间的通讯,多线程的数据共享问题

线程的通讯

在一个进程中,线程往往不是鼓励存在的,多个线程之间是存在于通信关系的

线程通信的体现

  • 一个线程传递数据给另外一个线程

  • 一个线程执行完任务后转到另外一个线程继续执行任务

相关文章

  • iOS多线程.md

    2018-05-22 iOS多线程-概念iOS多线程:『pthread、NSThread』详尽总结 多线程-概念图...

  • iOS多线程篇:NSThread

    iOS多线程篇:NSThread iOS多线程篇:NSThread

  • iOS 多线程

    前言:这可能是史上最全面的一篇iOS 多线程博客了(王婆卖瓜一番?),从多线程的基本概念,进程的概念,引出iOS中...

  • iOS面试备战-多线程篇

    iOS面试备战-多线程篇iOS面试备战-多线程篇

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • iOS多线程浅汇-实战篇

    一、前言 上一篇文章iOS多线程浅汇-原理篇中整理了一些有关多线程的基本概念。本篇博文介绍的是iOS中常用的几个多...

  • iOS 多线程

    ​ 前言:这可能是史上最全面的一篇iOS 多线程博客了(王婆卖瓜一番?),从多线程的基本概念,进程的概念,引出i...

  • iOS 多线程 ------ 概念篇

    一、基本概念 1、进程 一个进程是指操作系统中正在运行的一个应用程序,是系统进行资源分配和调度的基本单位,每一个进...

  • iOS多线程-GCD之dispatch_barrier_asyn

    上一篇 iOS多线程-GCD之Dispatch Group 一、释义 dispatch_barrier_async...

  • GCD—Semaphore 很简单

    上一篇 [iOS多线程-GCD之dispatch_barrier_async](http://www.jiansh...

网友评论

      本文标题:iOS多线程之概念篇

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