• 一、多线程基本概念


    iOS开发——多线程

    很多朋友都说iOS开发中,最难理解和学习的就是多线程,本人也是在多线程方面投入过很多脑细胞。。无论这方面的知识掌握和应用起来是否轻松,牢固的基本功、正确的认识理解、再加上充分的实战经验,都能助你将其搞定。这里先介绍一些多线程的知识以及应用,作为讨论,大家共同学习。

    一、多线程基本概念

    1、线程与进程

    (1)进程:操作系统的每一个应用程序就是一个进程

    (2)线程:进程的基本执行单元,一个进程的所有任务都在线程中执行

    2、主线程

    (1)定义:一个程序运行后,默认会开启1个线程,称为“主线程”或“UI线程”。其他为“子线程”。

    (2)作用及注意:线程一般用来 刷新UI界面 ,处理UI事件(比如:点击、滚动、拖拽等事件),避免将耗时的操作放到主线程,以免造成主线程卡顿。

    3、多线程原理:

    (1)是CPU快速的在多个线程之间的切换(自身的随机调度算法)。

    (2)同步/异步:

    • 同步:指的就是在当前线程(不一定是主线程)中,从上而下依次执行任务(代码块的阅读顺序),这个就叫做同步。
    • 异步:指不在当前线程中执行了,开辟新的线程执行, 注意:即使在别的线程中执行,也是从上而下依次执行的。

    4、iOS多线程实现方案

    多线程的技术方案.png 

    5、线程的占用空间:

    (1)子线程:512KB。

    (2)主线程:512KB。这里官方文档给出的是1M,实际测试为512,可以打印线程的stackSize属性验证。

    6、线程的状态和生命周期:

     (1)控制线程的状态(以NSThread管理线程为例)

    a、启动线程:- (void)start;

          线程进入就绪状态,当线程执行完毕后自动进入死亡状态。

    b、暂停(阻塞)线程

    + (void)sleepUntilDate:(NSDate *)date;

    + (void)sleepForTimeInterval:(NSTimeInterval)ti;

    线程进入阻塞状态

    • c、停止线程

    + (void)exit;

    线程进入死亡状态

    (2)状态图

    线程状态图.png

    7、线程的属性(以NSThread管理线程为例,一下是NSTread类中的方法或属性)

    (1)stackSize:占内存大小

    (2)name:名字

    (3)threadPriority:优先级

  • 相关阅读:
    怎样在UIViewController的生命周期函数中判断是push或者是pop触发的生命周期函数
    配环境
    assert 断言
    mysql:创建新库,新表,查看character
    Python中的[...]是什么?
    同时安装了python3.4和python3.5,如何使用pip?
    亲测可用的优雅的在已经安装了python的Ubuntu上安装python3.5
    如何截网页长图?
    安装tensorflow
    unable to lock the administration directory (/var/lib/dpkg/) is another process using it
  • 原文地址:https://www.cnblogs.com/David-SU/p/5259758.html
Copyright © 2020-2023  润新知