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