zoukankan      html  css  js  c++  java
  • 解惑2:进程线程,并行并发,同步异步,阻塞费阻塞

    一、串行,并行,并发

    1.名称解释

    • 串行:程序按顺序执行,同一时间只能执行一个程序,前一个执行完毕后才轮到后一个

    • 并行:多个程序可以同时执行,宏观和微观上看程序都是同时执行

    • 并发:同一时刻只有一条程序执行,但是多个进程被快速轮换执行,宏观上看是同时执行,微观上看只是把时间分成若干段,使多个进程快速交替的执行

    并发与并行关注的是程序是否在同一时间内同时被执行

    2.举个例子

    • 串行:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接
    • 并发:你吃饭吃到一半,电话来了,你接了电话聊了两句,停下来吃了两口饭,又拿起电话聊了两句
    • 并行:你吃饭吃到一半,电话来了,你一边打电话一边吃饭

    另外:

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

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

    二、进程与线程

    1.名称解释

    • 进程:程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础
    • 线程:有时被称为轻量级进程,是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位

    进程之间资源不共享,而线程之间资源共享(故引入锁以处理资源分配问题)

    2.举个例子

    • 进程:你开了一个迅雷,又开了一个QQ,这分别是两个进程
    • 线程:你在QQ分别和好友a还有好友b聊天,这是QQ这个进程里的两个线程

    三、同步与异步

    1.名称解释

    • 同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。

    • 异步,当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

    同步和异步关注的是消息通信机制

    2.举个例子

    • 同步:你去书店买本书,老板说帮你找一下,然后开始找,等到找到了再告诉你结果为止(返回结果)
    • 异步:你去书店买本书,老板说帮你找一下找到再给你打电话(不返回结果),等他找到的就打电话给你(回调)

    四、阻塞和非阻塞

    1.名词解释

    • 阻塞:是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回
    • 非阻塞:调用指在不能立刻得到结果之前,该调用不会阻塞当前线程

    阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态

    2.举个例子

    • 阻塞:你去书店买书,立即买到了,或者没有立刻就走了,这就是非阻塞
    • 非阻塞:你去书店买书,如果恰好书店没有,你就等一直等到书店有了这本书买到了才走,然后后排的人必须等你走了以后才能买书
  • 相关阅读:
    经典入门_排序
    经典入门_贪心算法
    经典入门_Hash的应用
    经典入门_排序
    uva 839
    uva 327
    uva 699
    uva 712
    uva 297
    uva 548
  • 原文地址:https://www.cnblogs.com/Createsequence/p/12659033.html
Copyright © 2011-2022 走看看