我正在尝试使用不应被阻塞的线程在不同的偏移位置写入文件。我不太确定如何进行相同的操作。我猜我需要用 O_NONBLOCK 标志打开文件。
只是我需要用 O_NONBLOCK 标志打开文件并且写入过程是一样的吗?
任何示例代码都将有助于解释
谢谢
我正在尝试使用不应被阻塞的线程在不同的偏移位置写入文件。我不太确定如何进行相同的操作。我猜我需要用 O_NONBLOCK 标志打开文件。
只是我需要用 O_NONBLOCK 标志打开文件并且写入过程是一样的吗?
任何示例代码都将有助于解释
谢谢
在 UNIX/Linux上,与文件关联的文件描述符始终准备好进行读写。换句话说,O_NONBLOCK
对常规文件没有影响。
通常,写入文件只是将数据复制到内核页面缓存并返回。除非文件是用O_DIRECT
标志打开的,或者内核页面缓存有太多脏页,在这种情况下写入会阻塞。
如果您需要对文件进行非阻塞写入,请创建一个专门的线程来完成所有写入,或者使用异步 I/O。