我今天被问到这个问题.
调试时,出现错误.但是在添加一个printf()行之后.没错.什么是错误可能导致这种情况.
这是一个悬而未决的问题.所以,让我说出我的想法.
我当时的答案不合逻辑.(例如,可能是一些内存错误?可能有并发问题?)那么你可能会听到什么.
有些人可能会说这不是一个好的或不是一个合理的问题.但是当我们处理面试时,我们别无选择.我们需要说出什么是合乎逻辑的,并使它成为发明.:)
并发问题非常有效.与其他操作相比,I/O操作printf需要很长时间,这有时会隐藏竞争条件(问题不会消失,只是表现不那么频繁 - 调试更难).
想象一下,有人想出了这个有缺陷的想法:
在这一点上,没有人知道会发生什么.如果线程启动非常快,它将在启动线程有机会写入之前读取内存位置.但是,如果新线程只是在读取变量之前打印"哦干草,我是一个新线程",它有很好的机会读取有效结果.当然,在1/10的情况下它会失败,调试会很麻烦.
| 归档时间: |
|
| 查看次数: |
4349 次 |
| 最近记录: |