计算机网络常见面试问题之同步异步、阻塞非阻塞、socket和网络编程模型BIO、NIO、AIO

本文详细阐述了同步/异步和阻塞/非阻塞的概念,并探讨了它们在多线程中的应用。接着介绍了Socket作为网络通信接口的基础,以及BIO、NIO和AIO三种网络编程模型。BIO基于阻塞IO,易导致服务器资源消耗;NIO引入了非阻塞IO和Selector,提高了高并发场景下的效率;AIO则采用异步IO机制,但应用相对较少,NIO仍是主流选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同步/异步和阻塞/非阻塞

在关于多线程的文章中,了解过同步和异步机制,这是一个相对的术语,适用于所有类型的计算,而不仅仅是IO操作。通常异步指得是某些操作发生在另一个线程中(相对于发起请求IO计算的线程)

在这里插入图片描述

而阻塞和非阻塞是一种调用时的状态。

阻塞式调用则是:发起任务后,等待收到任务结果才能继续执行。

非阻塞式调用:发起任务后,在等待任务结果时,还能继续执行其他任务。

通常我们会把同步异步、阻塞非阻塞混为一谈,其实他们之间没有必然的联系,按照排列组合,也是有四种情况。

  • 同步阻塞
  • 同步非阻塞
  • 异步阻塞
  • 异步非阻塞

不过也有说法只有存在三种,即同步阻塞、同步非阻塞、异步

在广义上,”阻塞“和”非阻塞“可以粗略地来表示”同步“和”异步“,从这个意义来说,没有阻塞异步和非阻塞异步,这种说法是多余的,因为异步本身就是为了非阻塞。

但在狭义的观点上来看,阻塞和非阻塞指的是不同的内核IO接口,我们通常编写的代码的IO操作,最终都需要内核通过阻塞或非阻塞接口执行。

Socket

在之前文章中我们也了解过Socket,翻译为套接字。

Socket是基于Unix,一切皆文件的思想。它是TCP/IP协议的抽象,是操作系统对外开放的接口。

Socket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值