美文网首页
iOS基础知识点-进程、线程、多线程

iOS基础知识点-进程、线程、多线程

作者: 慌莫染 | 来源:发表于2021-07-08 16:08 被阅读0次

    1.进程和线程分别是什么意思?有什么区别?

    进程:

    在iOS中每个正在运行的应用程序(app)就是一个进程,每个进程都是相互独立的,每个进程都运行在其专用且受保护的内存中。

    线程:

    线程是进程运行的基本执行单位,也就是说一个进程可以有很多个线程,进程的所有任务都是由线程来执行的。
    用比喻的方法来说,app就像一个工厂,运行的工厂就是一个进程,每个工厂都有自己独立的地址。而里面的工人和机器都是线程,负责的东西不同而已。主机器便是主线程。但进程运行的时候,主线程也就必然运行。当主机器卡住时(主线程阻塞),就会造成工厂停产,崩溃(进程崩溃)。当工人崩溃时(线程崩溃时),工厂(进程)也就崩溃。

    2.什么是多线程

    多线程:

    一个进程可以开启多条线程,并发执行不同的任务,这就是多线程。多线程可以提高程序的执行效率。

    原理:

    实现多线程是采用一种并发执行机制。

    并发执行机制原理:

    简单来说就是把一个处理器划分为若干个短的时间片,每个时间片依次轮流处理各个应用程序,由于一个时间片很短,相对于一个程序来说,就好像是处理器在为自己单独服务一样,从而达到多个应用程序在同时进行的效果。
    用比喻的方法来说,实现多线程,就好像是一个闪电侠,在银行窗口工作,因为他速度很快的在不同窗口间切换服务,看过去就好像每一个人都有一个专属闪电侠为自己服务,实际来说还是只有一个闪电侠。

    优点:

    1.使用线程可以把占据时间长的任务放到后台去处理。(就好像当你填表格的时候,我就可以先去服务别的人员)
    2.用户体验的提升,如用户点击按钮出发事件的处理,可以弹出进度条来显示处理的进度。
    3.程序的运行速度可能加快。

    缺点:

    1.大量的线程,会影响性能,因为操作系统需要在他们之间切换。(就算是闪电侠也是有服务极限的)
    2.更多的线程需要更多的内存空间
    3.线程可能会给程序带来“bug”
    4.需要注意线程死锁的情况,开发逻辑变的相对复杂

    3.iOS多线程开发的常用方式

    1.pthread----------------C语言通用的多线程API,跨平台,手动管理线程生命周期,难度大
    2.NSThread-------------苹果提供的面向对象操作线程的技术,手动管理线程生命周期,简单方便,但很少用到
    3.GCD--------------------苹果开发用于多核编程的解决方法,会自动利用更多的CPU内核,自动管理线程,常用
    4.NSOperation---------对GCD的封装。面向对象开发,比GCD更简单易用、代码可读性更高。常用

    GCD的使用
    NsOperation的使用

    相关文章

      网友评论

          本文标题:iOS基础知识点-进程、线程、多线程

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