在写共享打开的文件上写入原子

时间:2013-01-28 13:09:47

标签: c# filestream atomic

我有一个在多个进程的writeshare和append模式下打开的文件流。 有人知道一个无缓冲的写操作是否可以被认为是原子的吗?

或者我是否需要开发一种同步不同写入的方法以确保我的数据安全?

1 个答案:

答案 0 :(得分:1)

我找到了自己的方式。

您可以使用此构造函数打开文件流。

new FileStream(FileName,
    FileMode.Append,
    System.Security.AccessControl.FileSystemRights.AppendData,
    FileShare.ReadWrite, 4096, FileOptions.None);

使用 System.Security.AccessControl.FileSystemRights.AppendData 参数打开流,使用 FileMode.Append ,操作系统将尝试以原子方式写入缓冲区。

如果您的写入大于缓冲区大小,则操作将不是原子操作,因此您必须检查缓冲区大小。