Race Condion 中文名不知道怎么翻译,竞态条件?紊乱条件?冲突条件?在多线程编程过程中,我们常常关心的是我们的线程是否会出现死锁(deadlock)的情况,而忽视Race Condion。到底Race Condtion是什么呢?
Race Condion是在多线程(或者说多个处理过程)情况下,对有些共享资源进行混乱操作,导致整个处理过程变得混乱,引发BUG。
有一个英文解释:
A race condition is any case where the results can be different depending on the order that processes arrive or are scheduled or depending on the order that specific competing instructions are executed.
一个早期传统的Race Condion的例子:
在早期的UNIX版本中,存在一个叫UNIX login的攻击方式。当一个新用户登陆到系统后,需要从root权限切换到user权限,假如在切换过程中一直按ESC键,则会导致权限切换不成功,使得登陆的用户一直具有root权限,从而控制整个计算机。
下面我们用C#来做一个多线程情况下的Race Contion的例子: