首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发现文件系统并发问题?

如何发现文件系统并发问题?
EN

Stack Overflow用户
提问于 2010-03-27 01:09:15
回答 2查看 535关注 0票数 0

我有一个在Linux上运行的应用程序,我发现自己需要windows (!)。

问题是,每1000次左右,我都会遇到并发问题,这些问题与文件的并发读/写一致。我相当确定Windows下的文件锁定将禁止此行为,但我没有足够快的windows框来检查。

有太多的文件访问(太多的数据)期望strace可靠地工作--绝对的输出量可能也会改变这个问题。每次在不同的文件上也会发生这种情况。理想情况下,我希望更改/重新配置linux文件系统,使其对wrt并发访问有更多的限制(就像在fail-fast中一样)。

有没有什么工具/设置可以用来实现这一点?

EN

回答 2

Stack Overflow用户

发布于 2010-03-27 02:13:35

嗯。在类似Posix的系统上,对文件的并发访问是完全合法的,因此不存在与之相关的“故障”模式。在Linux上不能使用文件锁定有什么原因吗?从你的描述中很难看出实际问题是什么(1000倍于什么?)但听起来传统的flock()或lockf()系统调用可能就是您要找的。

票数 2
EN

Stack Overflow用户

发布于 2010-03-27 02:26:56

出于某种原因,我以为你在使用C++。如果您是这样的话,以下内容将适用。

如果您正在使用多线程和fstream IO和自定义的streambufs,或者您禁用了sync_with_stdio,那么是的,Windows的行为将与C++上的iostream不同。

我在我自己的一个项目中遇到了这个问题。

Windows在其iostream哨兵中定义了一个互斥锁。Linux不需要。Linux似乎确实在它的C stdio函数中有锁定功能,所以通常情况下这是可行的。

然而,我定义了一个定制的debug streambuf,它没有通过stdio,并且在Linux中得到了各种各样的损坏。

我使用了一个互斥锁来解决这个问题,如果操作系统是Windows,这个互斥锁就会被预处理出来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2525184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档