美文网首页ios面试题
进程和线程的区别?同步异步的区别?并行和并发的区别?

进程和线程的区别?同步异步的区别?并行和并发的区别?

作者: 充满活力的早晨 | 来源:发表于2018-04-09 17:58 被阅读36次

    进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

    线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

    同步:阻塞当前线程操作,不能开辟线程。

    异步:不阻碍线程继续操作,可以开辟线程来执行任务。

    并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。

    并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

    区别:并发并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。

    GCD的一些常用的函数?(group,barrier,信号量,线程同步)

    我们使用队列组来开辟线程时,队列组中的队列任务是并发,当所有的队列组中的所有任务完成时候,才可以调用队列组完成任务。

    image

    barrier:表示栅栏,当在并发队列里面使用栅栏时候,栅栏之前的并发任务开始并发执行,执行完毕后,执行栅栏内的任务,等栅栏任务执行完毕后,再并发执行栅栏后的任务。

    image

    信号量:Semaphore是通过‘计数’的方式来标识线程是否是等待或继续执行的。信号量

    image image

    [摘抄文章](https://mp.weixin.qq.com/s?__biz=MzUxODI3MjY2Ng==&mid=2247484667&idx=1&sn=c0d86a00e541913aabf6a67af86926a0&chksm=f98a270ecefdae18a5635b66d90f99269f0e0c5718ebaafcba1bed17fb2db9371a919558bb35&scene=38#wechat_redirect

    相关文章

      网友评论

        本文标题:进程和线程的区别?同步异步的区别?并行和并发的区别?

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