什么是阻塞和非阻塞Web服务器,两者有什么区别?

问题描述 投票:0回答:4

我见过很多Web框架提供非阻塞Web服务器,我只是想知道这意味着什么。

webserver
4个回答
55
投票

阻塞的网络服务器类似于电话。您需要在线等待得到回复并继续;非阻塞网络服务器就像短信服务。您发送短信您的请求,做您的事情并在收到短信后做出反应!


32
投票

使用阻塞套接字,执行将等待(即“阻塞”),直到发生完整的套接字操作。因此,您可以在代码中立即处理任何结果/响应。这些也称为同步套接字。

非阻塞套接字操作将允许立即恢复执行,并且您可以通过回调或事件处理服务器的响应。这些称为异步套接字。


6
投票
非阻塞通常意味着事件驱动,通过事件驱动系统在单个线程中复用所有活动,而不是使用多个线程。


0
投票
阻塞服务器使用专用进程/线程来处理单个收入请求。

在非阻塞服务器中,进程/线程能够同时处理多个请求。这是可能的,因为通常大多数时候请求都处于等待 I/O 操作结果的状态(读取文件、等待数据库查询结果、等待对某些 Web 服务的 http 请求结果等) 。因此,当一个请求处于“等待”状态时,进程/线程可以处理其他处于“就绪”状态的请求。

从编程阻塞服务器处理程序的角度来看很简单。它只是通过专用进程/线程处理输入请求。另一方面,非阻塞服务器中的处理程序应以某种方式通知进程/线程处于哪种状态,它是在等待 I/O 结果还是已收到 I/O 结果并准备好继续处理。

© www.soinside.com 2019 - 2024. All rights reserved.