我有一些带有竞争条件的代码......我知道它是竞争条件,因为它不会一直发生,而且似乎更常发生在双核机器上.
当我追踪时,它永远不会发生.虽然,它也可能是一个僵局.通过分析完成和不发生的日志的完成阶段,我已经能够将此错误指向单个函数.但是,我不知道在这个功能的范围内发生了什么.它不在顶级.
如果是竞争条件,添加日志语句或断点将改变时间,并防止这种情况发生.
除了获得竞争条件分析器之外,我还能使用哪种技术来确定这种情况的发生方向吗?
这是在Visual Studio 9中,使用C++(非管理类型).
c++ race-condition visual-studio-2008 conditional-statements
首先,免责声明:我对YAML不太熟悉.我正在尝试将YAML文档解析为关键值对(不要担心我是如何做的.我已经处理好了这一点)
我的文件过去看起来像:
world:
people:
name:Suzy
address:chez-bob
Run Code Online (Sandbox Code Playgroud)
然后,有人去改变它.
world:
people:
name:!$uzy
address:chez-bob
Run Code Online (Sandbox Code Playgroud)
我得到这个解析错误:
yaml.constructor.ConstructorError: could not determine a constructor for the tag '!$uzy'
Run Code Online (Sandbox Code Playgroud)
这甚至意味着什么?我怎么会去解释它!$只有两个字符?我只想要一个字符串键和值的字典!此外,编辑yaml文件不是一个选项.必须使用解析器在代码中修复问题.