1
12
了解算法实际上并不能让你预测什么时候会发生什么。程序或线程执行过程中发生的各种延迟都取决于环境条件(空闲RAM->交换、其他繁忙任务、中断等)。 如果要将多线程程序映射到一个顺序执行,并且线程本身的行为是确定性的,那么整个程序可能是确定性的,“并发”问题可能是可复制的。当然,到那时它们就不再是并发问题了。 |
2
6
不确定性 . |
3
3
有一些工具(正在开发中)将尝试以某种可预测的方式创建竞争条件,但这是关于前瞻性测试,而不是关于重建“野外bug”。 CHESS 这就是一个例子。 |
4
3
|
5
0
多线程程序中的大量崩溃与多线程本身(或相关的资源争用)无关。 |
6
0
我认为这是不可行的。为了执行特定的线程交错,我们需要在共享变量上设置锁,强制线程按特定顺序访问它们。这将导致性能严重下降。 回放并发错误通常由记录和回放系统来处理。由于记录如此大量的信息也会降低性能,因此最新的系统会进行部分日志记录,然后使用SMT解决方法完成线程交错。我相信这种系统的最新进展是Symbiosis(发表在今年的PLDI会议上)。您可以在以下URL中找到开源实现: http://www.gsd.inesc-id.pt/~nmachado/software/Symbiosis_Tutorial.html |
7
-1
|