非阻塞线程安全文件写入

时间:2012-07-04 05:20:20

标签: multithreading file-io nonblocking

我正在尝试使用不应被阻止的线程在不同偏移位置的文件中写入。我不太清楚如何继续这样做。我猜我需要用O_NONBLOCK标志打开文件。

只是我需要用O_NONBLOCK标志打开文件并且写入过程是一样的吗?

任何示例代码都可以作为解释

由于

1 个答案:

答案 0 :(得分:1)

在UNIX / Linux file descriptors associated with files are always ready for read and write上。换句话说,O_NONBLOCK对常规文件没有影响。

通常,写入文件只是将数据复制到内核页面缓存并返回。除非使用O_DIRECT标志打开文件,否则内核页面缓存的脏页太多,在这种情况下写入会变为阻塞。

如果您需要对文件执行非阻塞写入,请创建一个执行所有写入的专用线程,或使用asynchronous I/O