我正在尝试使用不应被阻止的线程在不同偏移位置的文件中写入。我不太清楚如何继续这样做。我猜我需要用O_NONBLOCK标志打开文件。
只是我需要用O_NONBLOCK标志打开文件并且写入过程是一样的吗?
任何示例代码都可以作为解释
由于
答案 0 :(得分:1)
在UNIX / Linux file descriptors associated with files are always ready for read and write上。换句话说,O_NONBLOCK
对常规文件没有影响。
通常,写入文件只是将数据复制到内核页面缓存并返回。除非使用O_DIRECT
标志打开文件,否则内核页面缓存的脏页太多,在这种情况下写入会变为阻塞。
如果您需要对文件执行非阻塞写入,请创建一个执行所有写入的专用线程,或使用asynchronous I/O。