提升文件锁定(可共享和作用域的file_locks)的一般策略,以及我认为的一般文件锁定,是这样的:
- 打开
- 锁
- 对文件内容进行操作
- 开锁
- 关闭文件
但是,我将打开文件进行追加,并想调用 tellp 来查看我在哪里。在上述情况下这样做安全吗?在锁定之前打开文件后是否会立即设置文件指针,因此可能不受保护?如果是这样,是否有一个标准的成语来解决这个问题?
提升文件锁定(可共享和作用域的file_locks)的一般策略,以及我认为的一般文件锁定,是这样的:
但是,我将打开文件进行追加,并想调用 tellp 来查看我在哪里。在上述情况下这样做安全吗?在锁定之前打开文件后是否会立即设置文件指针,因此可能不受保护?如果是这样,是否有一个标准的成语来解决这个问题?
这可能是特定于环境的,但在大多数平台上:
当打开文件进行追加时,文件指针会在每次写入前立即调整。因此,如果您tellp
在锁定文件之前使用它,它可能不会告诉您新附加的字节将去哪里,但是您不应该有两个使用锁定的进程以某种方式仍然附加相同范围的字节。
我推荐好的提升文档: http: //www.boost.org/doc/libs/1_45_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.file_lock
您可以在其中阅读:
哦,这太糟糕了......我想帮忙,我已经编写了示例代码,尝试一下......从 1_44 开始,win32 的文件锁定被破坏,刷新对锁定的文件不起作用。
对不起,不是我的错。
如果有帮助,理论上:如果您打开文件进行追加,则意味着在每次写入操作之前自动搜索结束。它不会阻止您随时手动寻求结束 - 即使没有写作。然而,经验(见上文)说:远离破碎的东西。