我有一个在多个进程的writeshare和append模式下打开的文件流。 有人知道一个无缓冲的写操作是否可以被认为是原子的吗?
或者我是否需要开发一种同步不同写入的方法以确保我的数据安全?
答案 0 :(得分:1)
我找到了自己的方式。
您可以使用此构造函数打开文件流。
new FileStream(FileName,
FileMode.Append,
System.Security.AccessControl.FileSystemRights.AppendData,
FileShare.ReadWrite, 4096, FileOptions.None);
使用 System.Security.AccessControl.FileSystemRights.AppendData 参数打开流,使用 FileMode.Append ,操作系统将尝试以原子方式写入缓冲区。
如果您的写入大于缓冲区大小,则操作将不是原子操作,因此您必须检查缓冲区大小。