• 并行、并发、同步、异步、阻塞、非阻塞


    自己的不确定性理解:

    (同步:某个线程调用一直等待系统调用结果返回,才会执行)

    (异步:某个线程调用没有等待系统调用结果返回,就直接执行)

    (阻塞:)

    (非阻塞:)

    并行:多个CPU核心,不同的程序就分配给不同的CPU来运行。可以让多个程序同时执行。

    并发:单个CPU核心,在一个时间切片里一次只能运行一个程序,如果需要运行多个程序,则串行执行。

    同步与阻塞,异步与非阻塞的区别:
      同步与异步是对应的,它们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。
      阻塞与非阻塞是对同一个线程来说的,在某个时刻,线程要么处于阻塞,要么处于非阻塞。
      阻塞是使用同步机制的结果,非阻塞则是使用异步机制的结果。

    一、概念

    1.     同步:调用时,在没有得到结果之前,该调用就不返回,按照这个定义,绝大多数函数都是同步调用。一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。
    最常见的例子就是 SendMessage。
    2.     异步:调用者不会立刻得到结果,调用发出后,通过状态(效率低)、通知,或回调函数来通知调用者。PostMessgae。
    3.     同步异步的区别:如何通知调用者得到调用结果,同步等待调用完成,异步通过状态、通知,或回调函数。
    4.     阻塞:调用结果返回之前,当前线程会被挂起。socket的read/write/recv
    5.     同步与阻塞的区别:同步当前线程还是激活的,只是从逻辑上当前函数没有返回而已。
    6.     非阻塞:不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
    7.     异步与非阻塞的区别:非阻塞是立刻返回调用结果,异步不会立刻返回调用结果,而是通过状态,通知,回调。
    8.     异步与阻塞的关系:异步也会调用阻塞的函数,比如用select 函数,当select 返回可读时再去read 一般都不会被阻塞,但是read是一个阻塞的函数。
    9.     同步异步和阻塞非阻塞之间的区别:同步异步是如何通知的概念,阻塞和非阻塞是如何执行的概念。
    二、        同步/异步与阻塞/非阻塞的组合分析
    同步阻塞形式: 等待执行结果是一直等待,执行时线程挂起(未对fd 设置O_NONBLOCK 标志位的read/write 操作)
    同步非阻塞形式:等待执行结果是一直等待,执行时函数立即返回(对fd 设置O_NONBLOCK 标志位的read/write 操作)
    异步阻塞形式:不是在处理消息时一直等待(通过状态、通知,或回调函数通知主调函数select ),而是在等待消息被触发时被阻塞(线程挂起).如果select 函数,的最后一个timeout 参数为NULL,程序就会停止在select这里。
    异步非阻塞形式:在处理消息是不等待,在执行消息是也不等待。

  • 相关阅读:
    20191208浙江自然博物馆寒武纪迸发专题展
    Spring Crest-英特尔出品的神经网络训练场景加速卡
    20191203动物园玉皇山凤凰山南宋皇城遗址凤凰山玉皇山动物园
    博观而约取-观展攻略
    20191130周六浙江美术馆纤维艺术特展
    git clone下载速度很慢的解决方法
    Jupyter notebook使用技巧积累
    (转)Python--matplotlib绘图可视化知识点整理
    Pygame一些不错教程平时收集....
    pygame.Surface.get_at
  • 原文地址:https://www.cnblogs.com/windyrainy/p/10647905.html
Copyright © 2020-2023  润新知