• 并发、并行、同步、异步、阻塞、非阻塞相关概念


    并发

      在一个时间段内,有几个程序在同一个cpu上面运行,但是任意时刻只有一个程序在cup上运行。(一个cpu在一个时间点上只能运行一个程序,因为cpu的运算速度非常快,可达上亿次每秒,如在一秒内可以切换100个进程时,但是因为我们感觉不出cpu的切换,所以错觉是几个程序在同时运行的)

    并行

      指的是在任意时刻上,有多个程序运行在不同的cpu上。(如8个cpu的计算机,每个cpu上同一个时刻,有一个程序运行的时候,那么可以成并行数量为8)

    注意:同步和异步的说法是相对于IO操作来说的。

    同步

      在代码执行IO操作的时候,必须等待IO操作完成之后,才返回的调用方式。

    如:线程的同步(即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态)

    异步

      代码在执行IO操作的时候,不必等到IO操作完成就返回的调用方式

    阻塞

      在函数调用的时候,当前线程被挂起来。

    非阻塞

      调用函数的时候,当前的线程不会被挂起,而是立即返回。

    注意:同步和异步实际上是消息通信的一种机制。我们在调用操作的时候,相当于是发一个消息给另外一个线程。后者说另外一个协程,让其执行某些操作,提交出去之后立马得到一个future,后期就可以通过这个future拿到调用的一些状态和结果。所以说实际上是消息通信之间的一种机制。而阻塞和非阻塞是一种函数调用的机制。

  • 相关阅读:
    KVM克隆CentOS6虚拟机后无法启动
    Python socket网络模块
    LNMP的安装--详细版
    CentOS7 二进制安装MySQL5.6.42
    超越线程池:Java并发并没有你想的那么糟糕
    有哪些实用的计算机相关技能,可以在一天内学会?
    如何写出让hr一看就约你面试的简历
    五个最佳编程字体
    Eclipse 的 Debug 介绍与技巧
    Redis时延问题分析及应对
  • 原文地址:https://www.cnblogs.com/yc3110/p/10632326.html
Copyright © 2020-2023  润新知