0

我正在学习使用 epoll、poll 等编写非阻塞服务器和客户端应用程序,并遇到了这个事件标志:

POLLOUT:现在写不会阻塞。

我理解阻塞读取的概念。但是什么是阻塞写?

4

2 回答 2

3

如果您以比另一方读取的速度更快的速度写入管道、套接字或终端等设备,最终您将填满相关的内核缓冲区,随后的写入将阻塞,直到另一方读取一些数据。

于 2012-03-28T21:20:25.737 回答
2

在任何 I/O 操作中,都存在需要访问硬盘(或其他慢速 I/O 设备)并返回的可能性。“阻塞”调用只是在往返 I/O 完成时等待的调用——同时,您的 . 所以,就像你可以等待阅读完成一样,你也可以等待写作。

这对于传统应用程序通常不是那么有用——您想告诉操作系统写入您的数据,然后它就不再是您的问题了。当您试图保证存储在 I/O 设备(例如硬盘)(例如关系数据库系统中)上的数据完整性时,这将成为您的问题。(请注意,阻塞并不是您可以保证写入已完成的唯一方法。还请注意,随着计算机复杂性的增加,有多层缓存可能会或可能不会干扰实际阻塞。)

于 2012-03-28T21:24:08.017 回答