zoukankan      html  css  js  c++  java
  • 一、多线程基本概念

    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:优先级

  • 相关阅读:
    avalon.js 多级下拉框实现
    提取 ECharts 中的svg地图信息
    avalon.js实践 svg地图配置工具
    基于HTML Canvas实现“指纹识别”技术
    HTML5 Canvas指纹及反追踪介绍
    百度Openrasp开源的应用运行时自我保护产品,安装教程。
    浏览器指纹实现
    centos监控web目录www下的文件是否被黑、挂马的脚本
    Linux下文件完整性监控工具Tripwire详解
    在CentOS 7上使用Tripwire监控和检测修改的文件
  • 原文地址:https://www.cnblogs.com/David-SU/p/5259758.html
Copyright © 2011-2022 走看看