zoukankan      html  css  js  c++  java
  • 并发并行,同步异步,阻塞非阻塞,IO多路复用解释

    并发、并行

    并发:是指一个时间段内,有几个程序在同一个CPU上运行,但是任意时刻只有一个程序在CPU上运行。由于CPU的运行速度极快,可以在多个程序之间切换,这样造成一个假象就是多个程序同时在运行。
    并行:是指任意时刻点上,有多个程序同时运行在多个CPU上。并行的数量与CPU的核心数一致,即CPU为4核,并行数量最多为4。

    同步、异步

    同步:是指代码调用IO操作时,必须等待IO操作完成才返回的调用方式。
    异步:是指代码调用IO操作时,不必等待IO操作完成就返回的调用方式。

    阻塞、非阻塞

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

    IO多路复用

    select,poll,epoll都是IO多路复用的机制,但三者本质上都是同步IO,因为他们都需要在读写事件就绪后自己负责读写,也就是说这个读写过程是阻塞的,而异步IO则无需自己负责读写,异步IO的实现会负责把数据从内核拷贝到用户空间。
    相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件符管理多个文件描述符,将用户关系的文件描述的事件存放到内核的一个事件表中,这样在用户空间和内和空间的copy只需要一次。
    epoll并不代表一定比select好
    在高并发的情况下,连接活跃度不是很高,epoll比select好
    在并发不高的情况下,同时连接很活跃,select比epoll好

  • 相关阅读:
    python3 str.encode bytes.decode
    GTX 1080显卡出错
    Android studio2.2 app:transformNative_libsWithStripDebugSymbolForDebug
    psmisc
    How to configure locales to Unicode in a Docker Ubuntu 14.04 container?
    keras中文文档笔记1——概述
    keras中的一些小tips(一)
    基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
    Android studio 更新android SDK
    groovy基础
  • 原文地址:https://www.cnblogs.com/gaodi2345/p/11671518.html
Copyright © 2011-2022 走看看