我正在学习Linux内部。所以我遇到了poll
系统调用。据我了解,当一些数据准备好从设备读取以及我们准备好数据到设备时,驱动程序使用它来提供通知。
如果设备没有任何数据要读取,进程将在数据可用时进入睡眠状态并唤醒,反之亦然。
有人可以通过一些真实的例子为我提供对轮询系统调用的具体理解吗?
我正在学习Linux内部。所以我遇到了poll
系统调用。据我了解,当一些数据准备好从设备读取以及我们准备好数据到设备时,驱动程序使用它来提供通知。
如果设备没有任何数据要读取,进程将在数据可用时进入睡眠状态并唤醒,反之亦然。
有人可以通过一些真实的例子为我提供对轮询系统调用的具体理解吗?
轮询和选择(后者与轮询非常相似,但有这些差异)系统调用用于所谓的异步事件驱动方法来处理客户端的请求。
基本上,在网络编程中,服务器处理来自网络客户端的许多连接有两种主要策略:
1)更传统的:线程或面向过程的方法。在这种情况下,网络服务器有一个主进程,它在一个特定的网络端口(Web 服务器的端口 80)上侦听传入连接,当连接到达时,它会产生新的线程/进程来处理这个新连接。Apache HTTP 服务器采用了这种方法。
2) 上述异步事件驱动方法,其中(在最简单的情况下)网络服务器(例如 Web 服务器)是只有一个进程的应用程序,它接受连接(为每个新客户端创建套接字),然后使用 poll/select 监视这些套接字对于传入的数据。Nginx http web 服务器采用了这种方法。