• ios高级开发之多线程(一)


    1.概念:

    多线程(multithreading)到底是什么呢,它是指在软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件的支持,而能够在同一时间执行多个线程,进而提升整体处理性能。在一个程序中,这些独立运行的程序片段,叫做线程(thread)。利用它编程的概念就叫做多线程处理。

    2.多线程的原理:

    对于单核的cpu而言,同一时间,CPU实际只能处理一个线程,也就是说,在某一时刻,实际只有一个线程在执行。所以对于在单核的CPU,执行多线程。实际上是在不同的线程之间来回切换。造成多个线程同时执行的现象。如果同时启动的线程非常多的话,就会对CPU资源浪费。

    而对于多核的CPU而言,才是真正的在某一个时刻同时执行。比如双核,双线程。

    3.关于线程与进程

    每一个正在系统上运行的程序都是一个进程,一个进程包含一个或多个线程。进程可能是整个程序或者部分程序程序的动态执行。线程是一组执行的集合,或者是程序的特殊段,它可以在程序里独立执行,也可以把它理解为代码运行的上下文。所以线程是轻量级的进程。它负责在单个程序里执行多任务。通常是由操作系统来负责多个线程的调度和执行。

    线程是程序里单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。

    线程和进程的区别在于:子进程和父进程有不同的代码和数据空间。而多个线程则共享数据空间。每个线程都有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU.

    4.多线程的优缺点

    优点;

    1.可以把耗时较长的任务放到后台去处理。比如,下载图片。

    2.可以有更好的用户交互。比如进度条的显示。

    3.程序的运行速度可能加快。

    缺点:

    1.当线程数量较多的时候,会占用大量的CPU资源。而且执行的时间只慢不快。

    2.开启一个线程需要占用一定的内存空间。默认情况下,是512K,如果开启大量的线程,会占用大量的内存空间,降低程序的性能。更多的线程需要更多的内存空间。

    3.程序设计更加复杂,比如线程间的通信,多线程的数据共享,可能会给程序带来更多的BUG,因此要小心使用。

    4.通常块模型的数据在多个线程间共享的,需要进行合理的管理。

    既然有优点也有缺点,那么为什么我们要学习和使用多线程编程技术呢?

    一个个的按顺序执行程序是无法忍受的,比如你显示一个列表。里面很多人的头像,信息,但是下载头像需要大量的时间,你如果等待头像下载完毕,列表才能显示,是非常痛苦的,尤其在移动APP里,一切以用户的体验为第一重要任务。

    在IOS开发里,在一个程序运行之后,默认开启一个线程,就是大家常说的“主线程”,或者“UI线程”。主线程一般用来刷新UI界面,处理UI事件。(比如点击,滚动,拖拽)等等。

    在主线程的使用中要注意,不要将那些耗时的操作放到主线程中。

    耗时操作会卡住主线程。严重影响用户体验。

  • 相关阅读:
    如何用PostMan
    LINQ笔记-LINQ操作DataTable
    EF Core利用Transaction对数据进行回滚保护
    php 替换模板中的 PHP源码标签字符方法
    php读取文件使用redis的pipeline(管道)导入大批量数据
    Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
    php 版本升高后 会出现 之Deprecated: Function ereg_replace() is deprecated的解决方法
    IIS + FastCGI+php(从5.2升级到5.3)
    Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/
    nginx 环境不支持thinkPHP
  • 原文地址:https://www.cnblogs.com/howlaa/p/10608916.html
Copyright © 2020-2023  润新知