美文网首页
9.阻塞与非阻塞

9.阻塞与非阻塞

作者: 进击的小鹿 | 来源:发表于2021-09-24 10:47 被阅读0次
  • 阻塞 I/O 是指,在用户进程发起 I/O 操作后,需要等待操作完成才能继续运行。

阻塞I/O的编程模型非常易于理解,但性能却并不理想,它会造成CPU大量闲置。使用阻塞I/O开发的系统,其吞吐量会比较低。虽然可以进行优化,使每一次 Socket 请求使用独立的线程,但这样做会造成线程膨胀,使系统越来越慢,最终宕机。通过线程池可以控制系统创建线程的数量,但仍然无法实现系统性能最优。

  • 非阻塞I/O是指,在用户进程发起I/O操作后,无须等待操作完成即可继续进行其他操作,但用户进程需要定期询问I/O操作是否就绪。

可以使用一个线程监听所有的 Socket请求,从而极大地减少线程数量。

对于I/O与CPU密集程度适度的操作而言,使用非阻塞将会极大地提升系统吞吐量,但用户进程不停轮询会在一定程度上导致额外的CPU资源浪费。

因此,判断阻塞I/O与非阻塞I/O时应关注程序是否在等待调用结果——如果系统内核中的数据还未准备完成,用户进程是继续等待直至准备完成,还是直接返回并先处理其他事情。

相关文章

  • 9.阻塞与非阻塞

    阻塞 I/O 是指,在用户进程发起 I/O 操作后,需要等待操作完成才能继续运行。 阻塞I/O的编程模型非常易...

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 好记性不如烂笔头——NIO学习笔记

    本文是对NIO知识的归纳与整理 1.阻塞与同步 1)阻塞(Block)和非租塞(NonBlock): 阻塞和非阻塞...

  • 非阻塞connect和accept

    1 非阻塞connect 1.1 阻塞模式与非阻塞 调用connect会发起三次连接。 阻塞模式下,connect...

  • IO多路复用 2021-10-03

    阻塞和非阻塞 进程进入waiting状态,就是阻塞阻塞/非阻塞,关注的是调用方的状态,往往是与系统调用(syste...

  • 深入浅出nodejs(异步I/O)

    异步IO实现现状 I/O的阻塞与非阻塞:IO对于操作系统内核而言,只有阻塞与非阻塞两种方式。阻塞模式的I/O会造成...

  • 谈论:同步异步阻塞非阻塞.md

    同步/异步:关注的方式(是否主动) 阻塞/非阻塞: 同步阻塞BIO: 同步非阻塞NIO: 异步非阻塞: 异步阻塞:

  • 同步异步和阻塞非阻塞_190220

    简介 一个知乎连接说的很好作者:严肃链接:同步异步和阻塞非阻塞来源:知乎“阻塞”与"非阻塞"与"同步"与“异步"不...

  • 关于菜鸟教程的node学习笔记

    1. 阻塞与非阻塞 阻塞: 按照代码顺序执行非阻塞:不按照代码顺序执行 2.事件循环 EventEmitter:o...

  • 01 基本概念

    同步 异步 阻塞 非阻塞 同步与异步关注的是消息通信机制,阻塞与非阻塞关注的是程序在等待调用结果(消息,返回值)时...

网友评论

      本文标题:9.阻塞与非阻塞

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