竟态条件 racing condition

多个线程读时,线程是安全的。
当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。
我的理解,竞态条件就是一种情况。

代码示例

假设有 A、B 两个线程,调用 add 方法分别传入 1 和 2,理想条件下结果应该是 3。
现在出现了不安全的情况,有可能结果不对。
add 方法就是临界区count 就是同一资源。

class Counter {  
    protected long count = 0;  
    public void add(long value) {  
        this.count = this.count + value;  
    }  
}  

其实这样一看,说白了,就是要严格控制线程的执行顺序,假设是按A、B的顺序执行来讲,B依赖于A先执行完成,B再执行结果才是正确的,中间不能出现问题,否则如果,中间交叉执行,就有可能发生了竞态条件。

你可能感兴趣的:(竟态条件 racing condition)